diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAADODrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAADODrv.dad new file mode 100644 index 0000000..02c92d6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAADODrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad new file mode 100644 index 0000000..1963e5e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DABDEDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DABDEDrv.dad new file mode 100644 index 0000000..06f639f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DABDEDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAConverter.exe b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAConverter.exe new file mode 100644 index 0000000..fcb7211 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAConverter.exe differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad new file mode 100644 index 0000000..98e9be9 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad new file mode 100644 index 0000000..604c9dd Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBXDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBXDrv.dad new file mode 100644 index 0000000..8d4bcb2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DADBXDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad new file mode 100644 index 0000000..af89dea Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAFIBDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAFIBDrv.dad new file mode 100644 index 0000000..52dbb8f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAFIBDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad new file mode 100644 index 0000000..94d7147 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBODrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBODrv.dad new file mode 100644 index 0000000..ba7298e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBODrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBXDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBXDrv.dad new file mode 100644 index 0000000..d5bdae1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAIBXDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad new file mode 100644 index 0000000..c457df8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad new file mode 100644 index 0000000..c1fdbe6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad new file mode 100644 index 0000000..779c18d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAODACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAODACDrv.dad new file mode 100644 index 0000000..08addb4 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAODACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad new file mode 100644 index 0000000..3009f60 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASDACDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASDACDrv.dad new file mode 100644 index 0000000..f83fe1d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASDACDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad new file mode 100644 index 0000000..1aec613 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.chm b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.chm new file mode 100644 index 0000000..3873c8c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.chm differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.exe b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.exe new file mode 100644 index 0000000..8556fcb Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DASchemaModeler.exe differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAServer.exe b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAServer.exe new file mode 100644 index 0000000..6d06eab Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAServer.exe differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAZeosDrv.dad b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAZeosDrv.dad new file mode 100644 index 0000000..5470ba4 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DAZeosDrv.dad differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/Data Abstract.lic b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/Data Abstract.lic new file mode 100644 index 0000000..51a3184 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/Data Abstract.lic @@ -0,0 +1,18 @@ +858331a3f6627cb5edad897b81e92c24542c2bd4e224284f86f4c5de2870c8e989978bee712e8654cb8c5cd8561fb3171743b80a7feb5ccad349208813d00b770fcf30a8e4fbc32fcd93dde70a9d6e58a5a6c52a1dea4a386eee6feed7ad369613c7d827d99529c4011ee3868997e243ce5ecc5a9bc1335cf514a3a4132b4af75e5f4eb39bda490711376264a57456afd4a46bd9b82e9275ea9524f65a59c73171b66ac4253dfff1e494d1d6636aa5098fbf868e72f1e1623726c382f73d1f61d90630686fb32fa8c28fe81f2323d3aba1ad6246c656cd3dbbf0190388ab176c8046f59a95f0d052897af2e98175339d3cb31faad526412273d97d7598d7235e +314ea6e3de0c5478f767a86d9dedc6d345aadc1821a9bffa4e1da6cbcd92bc27e88e3d81376fd316b2f4d0519278e58e3d67474ced1a4dd17b9b90ad1a907b18 +Name=Trial +Email=Trial +UserId=Trial +Company=Trial +LicenseType=Default +ProductName=Data Abstract +Version=5 +AllowBeta=0 +Trial=1 +SubscriptionEndDate=2008-11-30 +LicenseFileEndDate=2008-11-29 +StartDate=2008-11-26 +EndDate=2009-8-29 +P1=5523046978612394123 +P2=14746419013494857097 +P3=1587299007 diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DefaultConnections.ini b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DefaultConnections.ini new file mode 100644 index 0000000..fd8e300 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/DefaultConnections.ini @@ -0,0 +1,14 @@ +[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; + +[.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; + +[Descriptions] +AdventureWorks_Description=Microsoft SQL Server 2005, localhost +Northwind_Description=Microsoft SQL Server 2000, localhost +Employee_Description=Firebird/Interbase, localhost diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/borlndmm.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/borlndmm.dll new file mode 100644 index 0000000..2e3ede2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/borlndmm.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxasa30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxasa30.dll new file mode 100644 index 0000000..3410b2f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxasa30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxase30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxase30.dll new file mode 100644 index 0000000..1977334 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxase30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxconnections.ini b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxconnections.ini new file mode 100644 index 0000000..cd417db --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract (Common)/Bin/dbxdb230.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxdb230.dll new file mode 100644 index 0000000..b44bb92 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxdb230.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxdrivers.ini b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxdrivers.ini new file mode 100644 index 0000000..63a869f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract (Common)/Bin/dbxinf30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxinf30.dll new file mode 100644 index 0000000..75f6178 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxinf30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxint30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxint30.dll new file mode 100644 index 0000000..6be9532 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxint30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmss30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmss30.dll new file mode 100644 index 0000000..770053b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmss30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmys30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmys30.dll new file mode 100644 index 0000000..9795083 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmys30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmysA30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmysA30.dll new file mode 100644 index 0000000..e7a34cf Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxmysA30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxora30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxora30.dll new file mode 100644 index 0000000..f39c32d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxora30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxoraw30.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxoraw30.dll new file mode 100644 index 0000000..72fdf4d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/dbxoraw30.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract (Common)/Bin/sqlite3.dll b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/sqlite3.dll new file mode 100644 index 0000000..7111873 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract (Common)/Bin/sqlite3.dll differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl new file mode 100644 index 0000000..f42598a Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp new file mode 100644 index 0000000..33d6961 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_ADODriver_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl new file mode 100644 index 0000000..c44338d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp new file mode 100644 index 0000000..bc81f21 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_BDEDriver_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl new file mode 100644 index 0000000..be95b76 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp new file mode 100644 index 0000000..bbee11d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Core_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl new file mode 100644 index 0000000..3df8a01 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp new file mode 100644 index 0000000..d46eaeb Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_DBXDriver_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl new file mode 100644 index 0000000..1925b05 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp new file mode 100644 index 0000000..b14563e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IBXDriver_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl new file mode 100644 index 0000000..7df2429 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp new file mode 100644 index 0000000..62f287e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_IDE_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl new file mode 100644 index 0000000..1e56025 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp new file mode 100644 index 0000000..f4248ec Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_SQLiteDriver_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl new file mode 100644 index 0000000..5a4af9c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp new file mode 100644 index 0000000..107c36d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D10/DataAbstract_Scripting_D10.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl new file mode 100644 index 0000000..61958fb Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp new file mode 100644 index 0000000..db3de5d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl new file mode 100644 index 0000000..a1c2dc8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp new file mode 100644 index 0000000..ba6332c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl new file mode 100644 index 0000000..1fb8158 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp new file mode 100644 index 0000000..3700ba5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl new file mode 100644 index 0000000..5765ec1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp new file mode 100644 index 0000000..6dfadd3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl new file mode 100644 index 0000000..f69bd9c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp new file mode 100644 index 0000000..9b83e7e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl new file mode 100644 index 0000000..1b6941d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp new file mode 100644 index 0000000..4e1277d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl new file mode 100644 index 0000000..213c44d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp new file mode 100644 index 0000000..1bf2484 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl new file mode 100644 index 0000000..735fba1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp new file mode 100644 index 0000000..04f8fce Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/BaseLoginService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/BaseLoginService_Impl.dcu new file mode 100644 index 0000000..7feb271 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/BaseLoginService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DALoginService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DALoginService_Impl.dcu new file mode 100644 index 0000000..bac5c36 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DALoginService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DARemoteService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DARemoteService_Impl.dcu new file mode 100644 index 0000000..ce9c902 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DARemoteService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Async.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Async.dcu new file mode 100644 index 0000000..a103436 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Async.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Intf.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Intf.dcu new file mode 100644 index 0000000..e11e64c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Intf.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Invk.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Invk.dcu new file mode 100644 index 0000000..f8002d2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract3_Invk.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Async.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Async.dcu new file mode 100644 index 0000000..01936d9 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Async.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Intf.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Intf.dcu new file mode 100644 index 0000000..e0dbec1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Intf.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Invk.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Invk.dcu new file mode 100644 index 0000000..4a234ea Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract4_Invk.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstractService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstractService_Impl.dcu new file mode 100644 index 0000000..5a726c3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstractService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl new file mode 100644 index 0000000..05587eb Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp new file mode 100644 index 0000000..3a2b7a8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcu new file mode 100644 index 0000000..9d98b44 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl new file mode 100644 index 0000000..ba31447 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp new file mode 100644 index 0000000..394b3ab Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcu new file mode 100644 index 0000000..c4df573 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl new file mode 100644 index 0000000..809baa7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp new file mode 100644 index 0000000..b3bd4d0 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcu new file mode 100644 index 0000000..2109899 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_Reg.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_Reg.dcu new file mode 100644 index 0000000..09a48b6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_Reg.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl new file mode 100644 index 0000000..74a565b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp new file mode 100644 index 0000000..cea18ea Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcu new file mode 100644 index 0000000..928661b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl new file mode 100644 index 0000000..b7e45e4 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp new file mode 100644 index 0000000..eb642ed Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcu new file mode 100644 index 0000000..c12b4e0 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl new file mode 100644 index 0000000..4f82145 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp new file mode 100644 index 0000000..529f62e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcu new file mode 100644 index 0000000..dd546a6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_Reg.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_Reg.dcu new file mode 100644 index 0000000..ce62a25 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_Reg.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl new file mode 100644 index 0000000..566ee4e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp new file mode 100644 index 0000000..3f1087f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcu new file mode 100644 index 0000000..f7b16ee Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_Reg.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_Reg.dcu new file mode 100644 index 0000000..1cb18e0 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_Reg.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginServiceV5_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginServiceV5_Impl.dcu new file mode 100644 index 0000000..259529b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginServiceV5_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginService_Impl.dcu new file mode 100644 index 0000000..43262b2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/MultiDbLoginService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/SimpleLoginService_Impl.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/SimpleLoginService_Impl.dcu new file mode 100644 index 0000000..74ac45d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/SimpleLoginService_Impl.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODataTable.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODataTable.dcu new file mode 100644 index 0000000..d2a24a5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODataTable.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODriver.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODriver.dcu new file mode 100644 index 0000000..e23fbca Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADODriver.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADOInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADOInterfaces.dcu new file mode 100644 index 0000000..d590e1e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAADOInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABDEDriver.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABDEDriver.dcu new file mode 100644 index 0000000..980a370 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABDEDriver.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABin2DataStreamer.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABin2DataStreamer.dcu new file mode 100644 index 0000000..e3dacc3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABin2DataStreamer.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABinAdapter.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABinAdapter.dcu new file mode 100644 index 0000000..a3fd501 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABinAdapter.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABusinessProcessor.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABusinessProcessor.dcu new file mode 100644 index 0000000..7be506f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDABusinessProcessor.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACDSDataTable.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACDSDataTable.dcu new file mode 100644 index 0000000..1b00937 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACDSDataTable.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACache.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACache.dcu new file mode 100644 index 0000000..ee49a94 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDACache.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClasses.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClasses.dcu new file mode 100644 index 0000000..470fd8c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClasses.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClientDataModule.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClientDataModule.dcu new file mode 100644 index 0000000..ca375ea Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAClientDataModule.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADB2Interfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADB2Interfaces.dcu new file mode 100644 index 0000000..f22d534 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADB2Interfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManager.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManager.dcu new file mode 100644 index 0000000..de084a3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManager.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManagerEditor.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManagerEditor.dcu new file mode 100644 index 0000000..4c781a6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBSessionManagerEditor.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBXDriver.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBXDriver.dcu new file mode 100644 index 0000000..a5bffcf Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADBXDriver.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataAbstractEditors.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataAbstractEditors.dcu new file mode 100644 index 0000000..a76ba49 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataAbstractEditors.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataStreamer.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataStreamer.dcu new file mode 100644 index 0000000..9c351d4 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataStreamer.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTable.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTable.dcu new file mode 100644 index 0000000..a30b49a Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTable.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableMasterLinkWizardForm.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableMasterLinkWizardForm.dcu new file mode 100644 index 0000000..d864099 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableMasterLinkWizardForm.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableReferenceCollection.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableReferenceCollection.dcu new file mode 100644 index 0000000..3daaa76 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableReferenceCollection.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableWizards.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableWizards.dcu new file mode 100644 index 0000000..58f231b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADataTableWizards.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetProvider.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetProvider.dcu new file mode 100644 index 0000000..ba6307e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetProvider.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetWrapper.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetWrapper.dcu new file mode 100644 index 0000000..2eb0efa Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADatasetWrapper.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADelta.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADelta.dcu new file mode 100644 index 0000000..4e2854c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADelta.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADesigntimeCall.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADesigntimeCall.dcu new file mode 100644 index 0000000..4c496e6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADesigntimeCall.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverInfo.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverInfo.dcu new file mode 100644 index 0000000..58fd869 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverInfo.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverManager.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverManager.dcu new file mode 100644 index 0000000..e7f4c66 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDADriverManager.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAElevateDBInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAElevateDBInterfaces.dcu new file mode 100644 index 0000000..02acaee Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAElevateDBInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAEngine.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAEngine.dcu new file mode 100644 index 0000000..19315e8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAEngine.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExceptions.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExceptions.dcu new file mode 100644 index 0000000..7976213 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExceptions.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExpressionEvaluator.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExpressionEvaluator.dcu new file mode 100644 index 0000000..7d4c5af Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAExpressionEvaluator.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAGuideWizardForm.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAGuideWizardForm.dcu new file mode 100644 index 0000000..8586d78 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAGuideWizardForm.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETConnections.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETConnections.dcu new file mode 100644 index 0000000..00a71b3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETConnections.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETDriver.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETDriver.dcu new file mode 100644 index 0000000..a390fda Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHETDriver.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHelpers.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHelpers.dcu new file mode 100644 index 0000000..e54c127 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAHelpers.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBInterfaces.dcu new file mode 100644 index 0000000..12945b8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBXDriver.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBXDriver.dcu new file mode 100644 index 0000000..71e75aa Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIBXDriver.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEData.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEData.dcu new file mode 100644 index 0000000..cba842a Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEData.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEMenu.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEMenu.dcu new file mode 100644 index 0000000..2879a78 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDEMenu.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDERes.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDERes.dcu new file mode 100644 index 0000000..0962084 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAIDERes.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfaces.dcu new file mode 100644 index 0000000..7044b07 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfacesEx.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfacesEx.dcu new file mode 100644 index 0000000..5477447 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAInterfacesEx.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacroProcessors.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacroProcessors.dcu new file mode 100644 index 0000000..a4d8a9c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacroProcessors.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacros.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacros.dcu new file mode 100644 index 0000000..162a177 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMacros.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataTable.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataTable.dcu new file mode 100644 index 0000000..8839a16 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataTable.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataset.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataset.dcu new file mode 100644 index 0000000..e8cc7e1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMemDataset.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMySQLInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMySQLInterfaces.dcu new file mode 100644 index 0000000..4f10bd2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAMySQLInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAOracleInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAOracleInterfaces.dcu new file mode 100644 index 0000000..18d3ce7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAOracleInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPSScriptingProvider.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPSScriptingProvider.dcu new file mode 100644 index 0000000..598af2d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPSScriptingProvider.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPascalScript.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPascalScript.dcu new file mode 100644 index 0000000..546c8de Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPascalScript.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPleaseWaitForm.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPleaseWaitForm.dcu new file mode 100644 index 0000000..3ef5126 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPleaseWaitForm.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPostgresInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPostgresInterfaces.dcu new file mode 100644 index 0000000..4836b7f Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPostgresInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPoweredByDataAbstractButton.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPoweredByDataAbstractButton.dcu new file mode 100644 index 0000000..a624cf5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAPoweredByDataAbstractButton.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialog.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialog.dcu new file mode 100644 index 0000000..fd72218 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialog.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialogDetails.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialogDetails.dcu new file mode 100644 index 0000000..25d0ce9 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAReconcileDialogDetails.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARegExpr.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARegExpr.dcu new file mode 100644 index 0000000..b06fa02 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARegExpr.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteCommand.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteCommand.dcu new file mode 100644 index 0000000..d4b8c54 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteCommand.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapter.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapter.dcu new file mode 100644 index 0000000..59b2d1e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapter.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapterRequests.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapterRequests.dcu new file mode 100644 index 0000000..b156bb9 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARemoteDataAdapterRequests.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARes.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARes.dcu new file mode 100644 index 0000000..85c57dc Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDARes.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92Interfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92Interfaces.dcu new file mode 100644 index 0000000..34c7370 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92Interfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92QueryBuilder.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92QueryBuilder.dcu new file mode 100644 index 0000000..cfa6302 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQL92QueryBuilder.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQLiteInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQLiteInterfaces.dcu new file mode 100644 index 0000000..580ca47 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASQLiteInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASchemaUnitsGenerator.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASchemaUnitsGenerator.dcu new file mode 100644 index 0000000..e869f30 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASchemaUnitsGenerator.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAScriptingProvider.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAScriptingProvider.dcu new file mode 100644 index 0000000..7f448a7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAScriptingProvider.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASelectDataTablesForm.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASelectDataTablesForm.dcu new file mode 100644 index 0000000..92e8e66 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASelectDataTablesForm.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAServerLog.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAServerLog.dcu new file mode 100644 index 0000000..ea2e864 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAServerLog.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASupportClasses.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASupportClasses.dcu new file mode 100644 index 0000000..72291e5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASupportClasses.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASybaseInterfaces.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASybaseInterfaces.dcu new file mode 100644 index 0000000..179d0ad Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDASybaseInterfaces.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAUtils.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAUtils.dcu new file mode 100644 index 0000000..d21a277 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAUtils.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAWhere.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAWhere.dcu new file mode 100644 index 0000000..0b681fe Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAWhere.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXMLUtils.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXMLUtils.dcu new file mode 100644 index 0000000..41f2f8e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXMLUtils.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXmlAdapter.dcu b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXmlAdapter.dcu new file mode 100644 index 0000000..0537853 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D12/uDAXmlAdapter.dcu differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl new file mode 100644 index 0000000..f189d9c Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp new file mode 100644 index 0000000..ea67b34 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_ADODriver_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl new file mode 100644 index 0000000..54cb8b7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp new file mode 100644 index 0000000..1f3e2ba Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_BDEDriver_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl new file mode 100644 index 0000000..7ebdfd9 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp new file mode 100644 index 0000000..2c41152 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Core_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl new file mode 100644 index 0000000..142efda Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp new file mode 100644 index 0000000..5921fe1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_DBXDriver_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl new file mode 100644 index 0000000..4b3a4de Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp new file mode 100644 index 0000000..cc75c28 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IBXDriver_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl new file mode 100644 index 0000000..c1365df Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp new file mode 100644 index 0000000..8461b40 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_IDE_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl new file mode 100644 index 0000000..25565ed Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp new file mode 100644 index 0000000..eed5297 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_SQLiteDriver_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl new file mode 100644 index 0000000..eafdd66 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp new file mode 100644 index 0000000..ecd6af8 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D6/DataAbstract_Scripting_D6.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl new file mode 100644 index 0000000..3e62ccc Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp new file mode 100644 index 0000000..ca16b29 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl new file mode 100644 index 0000000..796ce19 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp new file mode 100644 index 0000000..10fcb3e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl new file mode 100644 index 0000000..bfc1bd5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp new file mode 100644 index 0000000..bde11d7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl new file mode 100644 index 0000000..e520856 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp new file mode 100644 index 0000000..520e3c7 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl new file mode 100644 index 0000000..8d647f6 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp new file mode 100644 index 0000000..d9f4cbd Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl new file mode 100644 index 0000000..8511d8d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp new file mode 100644 index 0000000..a256099 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl new file mode 100644 index 0000000..ebfba77 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp new file mode 100644 index 0000000..8382616 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl new file mode 100644 index 0000000..817da8e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp new file mode 100644 index 0000000..c5d4325 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.lfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.lfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas new file mode 100644 index 0000000..d20b514 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas @@ -0,0 +1,50 @@ +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 } + procedure Logout; + published + property OnLogout: TNotifyEvent read fOnLogout write fOnLogout; + end; + +implementation + +uses + {Generated:} DataAbstract4_Invk; + +{ BaseLoginService } + +procedure TBaseLoginService.Logout; +begin + if assigned(OnLogout) then + OnLogout(self); +end; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildDrivers.bpg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildDrivers.bpg new file mode 100644 index 0000000..32efc69 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildDrivers.bpg @@ -0,0 +1,79 @@ +#------------------------------------------------------------------------------ +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 = DAADODrv.dad DAAnyDACDrv.dad DABDEDrv.dad DADBISAM3Drv.dad DADBISAM4Drv.dad DADBXDrv.dad DADOADrv.dad DAFIBDrv.dad DAIBDACDrv.dad DAIBODrv.dad DAIBXDrv.dad DAMyDACDrv.dad DAMySQLDACDrv.dad DANexusDBDrv.dad DAODACDrv.dad \ + DAPostgresDACDrv.dad DASDACDrv.dad DASQLiteDrv.dad DAZeosDrv.dad DAElevateDBDrv.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) + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup new file mode 100644 index 0000000..5809593 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup @@ -0,0 +1,39 @@ + + + + + + + + + + + DataAbstract_Core_D10.bdsproj + DataAbstract_Scripting_D10.bdsproj + IDE\DataAbstract_IDE_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_PostgresDACDriver_D10.bdsproj + Drivers\DataAbstract_SDACDriver_D10.bdsproj + Drivers\DataAbstract_SQLiteDriver_D10.bdsproj + Drivers\DataAbstract_ZeosDriver_D10.bdsproj + DataAbstract_Core_D10.bpl DataAbstract_Scripting_D10.bpl DataAbstract_IDE_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_PostgresDACDriver_D10.bpl DataAbstract_SDACDriver_D10.bpl DataAbstract_SQLiteDriver_D10.bpl DataAbstract_ZeosDriver_D10.bpl + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj new file mode 100644 index 0000000..ce9f4d4 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj @@ -0,0 +1,258 @@ + + + {788d1e93-6494-4009-bad7-5d620a616e08} + + + + + + + + DataAbstract_Core_D11.dproj + + + DataAbstract_Core_D11.dproj + + + + + + + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj new file mode 100644 index 0000000..f9548c1 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj @@ -0,0 +1,308 @@ + + + {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 + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D6.bpg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D6.bpg new file mode 100644 index 0000000..08ba77e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg new file mode 100644 index 0000000..e570bb1 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg @@ -0,0 +1,89 @@ +#------------------------------------------------------------------------------ +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_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_PostgresDACDriver_D7.bpl DataAbstract_SDACDriver_D7.bpl DataAbstract_SQLiteDriver_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) + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_K3.bpg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/BuildPackages_K3.bpg new file mode 100644 index 0000000..6649fe0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas new file mode 100644 index 0000000..ce2614d --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas @@ -0,0 +1,210 @@ +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; + + 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 } +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/5.0.35.741/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas new file mode 100644 index 0000000..1e9ef22 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas @@ -0,0 +1,1095 @@ +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; + + 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 + 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.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 + fServiceSchema := Value; + + if (fServiceSchema <> nil) then + fServiceSchema.FreeNotification(Self) + else + fAcquireConnection := FALSE; +end; + +procedure TDARemoteService.SetServiceAdapter(const Value: TDADataAdapter); +begin + fServiceAdapter := Value; + if (fServiceAdapter <> nil) then fServiceAdapter.FreeNotification(Self); +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 + fCache := Value; + if (fCache<>NIL) + then fCache.FreeNotification(Self); +end; + +procedure TDARemoteService.SetCacheElements( + const Value: TDACacheElementCollection); +begin + fCacheElements.Assign(Value); +end; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql new file mode 100644 index 0000000..54f5e49 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections new file mode 100644 index 0000000..625165d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema new file mode 100644 index 0000000..32f7e13 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract.inc b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract.inc new file mode 100644 index 0000000..cc135ba --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3.RODL b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3.RODL new file mode 100644 index 0000000..d9d82c1 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3.RODL @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Async.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Async.pas new file mode 100644 index 0000000..e823d65 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas new file mode 100644 index 0000000..c1f4134 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas new file mode 100644 index 0000000..9ad9018 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4.RODL b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4.RODL new file mode 100644 index 0000000..1201aae --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4.RODL @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas new file mode 100644 index 0000000..3db4e4d --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas @@ -0,0 +1,645 @@ +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_Logout; + 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_Logout; + 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_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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas new file mode 100644 index 0000000..53131e6 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas @@ -0,0 +1,2496 @@ +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}'] + 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; + + 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; + +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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas new file mode 100644 index 0000000..3058bec --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas @@ -0,0 +1,621 @@ +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_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_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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm new file mode 100644 index 0000000..65deb18 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lfm new file mode 100644 index 0000000..e5b4ff9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lrs new file mode 100644 index 0000000..cca0dab --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas new file mode 100644 index 0000000..06fe45a --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas @@ -0,0 +1,1455 @@ +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; + +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) + 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); + private + function GetConnection: IDAConnection; + function UnpackDeltas(const DeltaStream: Binary; DeltaStructList: TDADeltaStructList): TDADeltasModes; + function TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; + procedure ExportedDataTables_MergeDelta(ADelta: IDADelta); + 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); + + { 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 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 } + +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; + inherited; +end; + +destructor TDataAbstractService.Destroy; +begin + 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.TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; +begin + result := true; + if assigned(aEvent) then aEvent(self, result); +end; + +{ IDataAbstractService: Schema Access } + +function TDataAbstractService.GetSchema(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 + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetSchema)'); + + 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 := AnsiToUtf8(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; + +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.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; +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: WideString; + // lConnection: IDAConnection; + lTableName: String; + lDataTable: TDADataset; + lUnionTable: TDAUnionDataTable; + lAppendData: TDADataForAppend; + lMapping: TDAColumnMappingCollection; + lFilter: string; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.InternalFill + 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 + lHasTransaction := false; + try + + ServiceDataStreamer.Initialize(result, aiWrite); + 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 + Check(); + //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 + Connection.BeginTransaction; + 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 := ServiceDataStreamer.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; + + lDataSet := ServiceSchema.NewUnionItemDataset( + GetConnectionForObject(lTableName), + lTableName, + lParamNames, + lParamValues, + lDynSelectFields2, + lProcessedWhereClause, + lMapping + ); + + ServiceDataStreamer.WriteDatasetData(lDataSet, lAppendData, x); + // Keeping track of maxrecords + if ((lMaxRecords <> -1) and (lAppendData.RecordCount >= lMaxRecords)) then Break; + end; + ServiceDataStreamer.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; + + ServiceDataStreamer.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; + ServiceDataStreamer.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 } + + finally + ServiceDataStreamer.Finalize(); + end; + + 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; + + except + FreeAndNIL(result); + raise; + end; + +end; + +//TODO: needs cleaning! +function TDataAbstractService.UnpackDeltas(const DeltaStream: Binary; DeltaStructList: TDADeltaStructList): TDADeltasModes; +var + i, j: integer; + lDeltaName: string; + lBizProc: TDABusinessProcessor; + lDetails : TDADatasetRelationshipList; + lFound: boolean; + lStruct : TDADeltaStruct; + ltabRef: TDADataTableReference; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.UnpackDeltas + + result := []; + Check(True); + // Reads the deltas. + ServiceDataStreamer.Initialize(DeltaStream, aiReadFromBeginning); + try + if (ServiceDataStreamer.DeltaCount = 0) then Exit; + for i := 0 to (ServiceDataStreamer.DeltaCount - 1) do begin + lDeltaName := ServiceDataStreamer.DeltaNames[i]; + if (ExportedDataTables.Count >0) then begin + ltabRef := ExportedDataTables.FindByName(lDeltaName); + if Assigned(ltabRef) then begin + // for ExportedDataTables , BP=nil + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), nil); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + 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 + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), lBizProc); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + if ServiceDataStreamer.HasReducedDelta 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); + + lStruct := DeltaStructList.Add(NewDelta(lDeltaName), lBizProc); + ServiceDataStreamer.ReadDelta(lDeltaName, lStruct.Delta); + + 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; + finally + ServiceDataStreamer.Finalize; + end; +end; + +function TDataAbstractService.UpdateData(const aDelta: Binary): Binary; +var + lProcessedDeltas: TStringList; + lDeltaStructs: TDADeltaStructList; + lStruct: TDADeltaStruct; + lDs: TDADataset; + lDoRaise: boolean; + i,j: integer; + modes: TDADeltasModes; + oldDeltaMode: Boolean; +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)'); + + result := nil; + fHasReducedDelta := False; + + lDeltaStructs := TDADeltaStructList.Create; + try + + try + modes:= UnpackDeltas(aDelta, lDeltaStructs); + if modes = [] then exit; + + if dumStandard in modes then begin + Check; + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + 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; + result := Binary.Create; + oldDeltaMode:=ServiceDataStreamer.SendReducedDelta; + ServiceDataStreamer.Initialize(result, aiWrite); + try + if fHasReducedDelta then ServiceDataStreamer.SendReducedDelta:=True; + for i := 0 to lDeltaStructs.Count-1 do + ServiceDataStreamer.WriteDelta(lDeltaStructs[i].Delta); + finally + ServiceDataStreamer.Finalize; + ServiceDataStreamer.SendReducedDelta:=oldDeltaMode; + 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.ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; +var + j: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lAllow: boolean; + lCommand: IDASQLCommand; + lCommandSchema: TDASQLCommand; + lConnection: IDAConnection; + 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)'); + + SetLength(lParamNames, aParameterArray.Count); + SetLength(lParamValues, aParameterArray.Count); + for j := 0 to (aParameterArray.Count-1) do begin + lParamNames[j] := UTF8ToString(aParameterArray[j].Name); + CheckUTF8Decode(aParameterArray[j].Name,lParamNames[j]); + lParamValues[j] := aParameterArray[j].Value; + end; + + lCommandName:=UTF8ToString(aCommandName); + CheckUTF8Decode(aCommandName,lCommandName); + lCommandSchema := ServiceSchema.Commands.SQLCommandByName(lCommandName); + if assigned(lCommandSchema) and not (lCommandSchema.IsPublic) then + raise EDAException.Create(lCommandSchema.Name +' is not accessible'); + + + lAllow := true; + lConnection := GetConnectionForObject(lCommandName); + if assigned(fExecuteCommandValidation) then fExecuteCommandValidation(self, lConnection, lCommandName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_CommandNotAccessible, [lCommandName]); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then lConnection.BeginTransaction; + try + + lCommand := ServiceSchema.NewCommand(lConnection, lCommandName, lParamNames, lParamValues, false); + if Assigned(fBeforeExecutecommand) then fBeforeExecuteCommand(self, lCommand); + result := lCommand.Execute; + if assigned(fAfterExecutecommand) then fAfterExecuteCommand(self, lCommand, Result); + + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then lConnection.CommitTransaction; + except + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then lConnection.RollbackTransaction; + raise; + end; +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 Connection.BeginTransaction; + 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 Connection.BeginTransaction; + 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 + fServiceDataStreamer := Value; + if (fServiceDataStreamer <> nil) then + fServiceDataStreamer.FreeNotification(Self); +end; + +procedure TDataAbstractService.SetServiceSchema(const Value: TDASchema); +begin + fServiceSchema := Value; + + if assigned(fServiceSchema) then + fServiceSchema.FreeNotification(self); +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.Check(CheckOnlyDataStreamer:Boolean = false); +begin + if not CheckOnlyDataStreamer then 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; + 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 + j: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lAllow: boolean; + lCommand: IDASQLCommand; + lCommandSchema: TDASQLCommand; + lConnection: IDAConnection; + 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); + 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(lCommandName); + if assigned(lCommandSchema) and not (lCommandSchema.IsPublic) then + raise EDAException.Create(lCommandSchema.Name +' is not accessible'); + + + lAllow := true; + lConnection := GetConnectionForObject(lCommandName); + if assigned(fExecuteCommandValidation) then fExecuteCommandValidation(self, lConnection, lCommandName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_CommandNotAccessible, [lCommandName]); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then lConnection.BeginTransaction; + try + + lCommand := ServiceSchema.NewCommand(lConnection, lCommandName, 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; + +type + TMyDatasetCollection = class(TDADatasetCollection) + end; + +function TDataAbstractService.GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; +var names : TStringList; + i : integer; + ds : TDADataset; + lResult: WideString; + lLogicalName: string; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.FillScripts + 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] 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] 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; + +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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj new file mode 100644 index 0000000..4c974b2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg new file mode 100644 index 0000000..11c667c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk new file mode 100644 index 0000000..1a90ff0 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk @@ -0,0 +1,116 @@ +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' + // + {$IFDEF USE_LOCALDATAADAPTER} + ,uDALocalDataAdapter in 'uDALocalDataAdapter.pas' + {$ENDIF} + ; +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk new file mode 100644 index 0000000..0f8679d --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk @@ -0,0 +1,116 @@ +package DataAbstract_Core_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 - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +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', + //.31 + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas' + // + {$IFDEF USE_LOCALDATAADAPTER} + ,uDALocalDataAdapter in 'uDALocalDataAdapter.pas' + {$ENDIF} + ; +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj new file mode 100644 index 0000000..b53a05f --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj @@ -0,0 +1,158 @@ + + + {f3a56007-69a7-443a-8fdf-56da71a8440c} + DataAbstract_Core_D11.dpk + Debug + 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 + + + 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 LibraryFalseFalseFalseTrueFalse402434FalseFalseFalseFalseFalse10331252RemObjects Software4.0.2.434RemObjects 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
+
+ + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk new file mode 100644 index 0000000..f1d68ac --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk @@ -0,0 +1,115 @@ +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', + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas' + // + {$IFDEF USE_LOCALDATAADAPTER} + ,uDALocalDataAdapter in 'uDALocalDataAdapter.pas' + {$ENDIF} + ; +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dproj new file mode 100644 index 0000000..c9bef7a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg new file mode 100644 index 0000000..3d4736d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof new file mode 100644 index 0000000..ff6f0ce --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk new file mode 100644 index 0000000..1829291 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk @@ -0,0 +1,116 @@ +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' + // + {$IFDEF USE_LOCALDATAADAPTER} + ,uDALocalDataAdapter in 'uDALocalDataAdapter.pas' + {$ENDIF} + ; +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg new file mode 100644 index 0000000..d9c7e92 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof new file mode 100644 index 0000000..19785e8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk new file mode 100644 index 0000000..6ad0dff --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk @@ -0,0 +1,115 @@ +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', + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas' + // + {$IFDEF USE_LOCALDATAADAPTER} + ,uDALocalDataAdapter in 'uDALocalDataAdapter.pas' + {$ENDIF} + ; +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs new file mode 100644 index 0000000..caa8e90 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs @@ -0,0 +1,1486 @@ +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('TDADriverManager','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#129#30#0 + +#129#30#0#131#31#0#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#129#30#0#129#30#0#136'%'#2#247#172'Q'#131#31#0#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#189'O'#3#173'E'#6#222'}'#31#255#173'C'#255#184'Z'#131#31#0 + +#131#31#0#131#31#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#128#0#0#128#0#0#128#0#0#255#255 + +#255#128#0#0'@'#0#0#255#134#3#255#140#12#255#152#28#255#163'/'#255#175'E'#255 + +#186']'#255#198'v'#131#31#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#255#146#19#255#134#3#255#142#13#230''#23 + +#255#164'2'#255#176'G'#255#187'_'#131#31#0#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#255#164'2'#247#136#15#154'0' + +#0#130#31#0#137'$'#1#230#137')'#255#177'I'#213#130'8'#131#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#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0 + +#255#183'V'#154'0'#0#255#0#255'_'#9#0'}'#27#0#167'A'#9#255#166'5'#255#177'L' + +#188'K'#0#140'+'#5#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#216#159#255#202#128#154 + +'0'#0#255#0#255'L'#0#0'i'#14#0#163':'#4#255#156'#'#255#167'7'#255#178'N'#131 + +#31#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#130#0'K'#130'"' + +#143#186'o'#220#248#3'_'#150#149','#0#181'D'#0#173'Z,'#255#217#161#255#216 + +#158#154'0'#0#255#0#255'h'#13#0#150'-'#0#176'B'#2#255#146#19#255#157'%'#188 + +'K'#0#129#30#0#255#0#255#255#0#255#0'M'#132#2'W'#138#0'K'#130#0'K'#130#15#129 + +#177'@'#201#240'c'#222#255'^'#203#234#3'_'#150#24'f'#142'(f}'#197'}K'#255#217 + +#161#255#215#157#154'0'#0#165'B'#14#169'C'#9#247#130#7#255#136#6#238#130#17 + +#131#31#0#255#0#255#255#0#255#255#0#255#0'X'#144#4'g'#153#19#201#254#15#199 + +#254'!'#206#254'5'#211#254'L'#217#254'e'#224#255''#229#255#154#235#255#3'_' + +#150#189'rA'#255#217#161#255#217#161#255#215#154#255#196's'#255#175'F'#255 + +#154'!'#255#136#6#131#31#0#255#0#255#255#0#255#255#0#255#255#0#255#0'['#147#3 + +'d'#152'('#194#240#17#199#254#17#199#254'#'#206#254'7'#212#254'N'#217#254'g' + +#224#255#129#230#255#3'_'#150#222#163'n'#255#217#161#255#217#161#255#217#161 + +#255#213#152#255#194'n'#255#173'C'#255#153#30#131#31#0#255#0#255#255#0#255 + +#255#0#255#0'K'#130#1'd'#157#3'i'#157'I'#203#240'-'#208#254#13#180#233#0'K' + +#130#3'Z'#140#27#146#192'P'#218#254'j'#224#255')x'#149#149'I"'#158'@'#17#172 + +'A'#4#222#163'n'#255#217#161#230#172'p'#131#31#0#131#31#0#157'5'#3#255#0#255 + +#255#0#255#0'K'#130#1'd'#156#11'v'#166'b'#184#213#129#230#255'R'#218#255#0'K' + +#130#255#0#255#0'K'#130#0'K'#130'*'#177#220'S'#218#255'Z'#208#240#3'_'#150'[' + +'-'#24#238's'#0#158'<'#10#255#217#161#131#31#0#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#0'K'#130#4#138#193'i'#186#213#186#242#255#171#239#255'{' + +#229#255#0'K'#130#255#0#255#0'Q'#137#0'K'#130#23#153#199'>'#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('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('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('TDADiagrams','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#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#142']Y'#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'f'#149#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';' + +#192'['#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#152'ic'#249#238#225#251#242#234#0'K'#0 + +#28#186'G'#28#186'G'#25#181'A'#0'K'#0#244#218#185#242#213#176#242#212#174#0 + +'K'#0#28#186'GA'#201'k'#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#163'rf'#246#238#233#251 + +#242#234#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#244#218#185#244#218#182#242#212 + +#174#0'K'#0#0'K'#0#30'k'#30#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#167'uh'#248#243#240 + +#253#249#245#251#242#234#251#242#230#0'e'#0#247#230#209#246#226#204#240#222 + +#204#244#218#185#244#218#185#242#213#176#242#212#174#30#129#30#2't'#169'x' + +#251#254'h'#246#255'U'#246#254'_'#254#255'x'#251#254#137#251#254'H'#207#242#5 + +#139#199#5'f'#149#172'yi'#248#243#240#255#254#254#248#243#240#251#242#234#0 + +'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#30#129#30#2't'#169#255 + +#254#254#240#255#255#198#255#255#160#255#255#159#251#254#159#251#254#146#255 + +#255'U'#246#254#5'f'#149#177'~k'#248#243#240#255#254#254#255#254#254#248#243 + +#240#254#247#241#249#238#225#248#234#216#247#230#209#0'e'#0#245#222#192#245 + +#222#192#242#213#176#242#213#176#244#218#185#4'y'#175#240#255#255#218#248#255 + +#183#255#255#159#251#254#137#251#254#131#250#251#8'k'#154#255#0#255#182#129 + +'l'#248#243#240#255#254#254#255#254#254#255#254#254#251#242#234#248#243#240 + +#251#242#230#248#234#216#0'e'#0#247#230#209#245#222#192#245#222#192#244#218 + +#185#242#213#176#244#218#185#2't'#169#2't'#169#2't'#169#2't'#169#2't'#169#2 + +'t'#169#255#0#255#255#0#255#187#132'n'#248#243#240#255#254#254#255#254#254 + +#255#254#254#255#254#254#251#242#234#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130 + +#245#222#192#244#218#185#242#213#176#242#212#174#240#208#165#240#207#163#128 + +'PK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#192#137'o'#253#249#245 + +#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#0#0#130#13'4' + +#255#4''''#255#0#30#255#0#0#130#246#224#193#245#222#192#244#218#182#242#213 + +#176#242#212#174#240#208#165#128'PK'#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#192#137'o'#253#249#245#255#254#254#255#254#254#255#254#254#255#254 + +#254#255#254#254#0#0#130'(S'#255#26'D'#255#13'4'#255#0#0#130#247#230#209#246 + +#224#193#245#222#192#244#218#185#242#213#176#242#212#174#128'PK'#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#203#145's'#248#243#240#255#254#254 + +#255#254#254#255#254#254#255#254#254#255#254#254#0#0#130'1^'#255'1^'#255'(S' + +#255#0#0#130#248#234#216#247#230#209#246#226#204#244#218#185#244#218#185#244 + +#218#182#128'PK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#203#145's' + +#253#249#245#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#0#0 + ,#130#0#0#130#0#0#130#0#0#130#0#0#130#249#238#225#248#234#216#247#230#209#246 + +#224#193#246#224#193#244#218#182#128'PK'#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#212#152'u'#253#249#245#255#254#254#255#254#254#255#254#254#255 + +#254#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#251#242 + +#234#253#249#245#248#234#216#248#234#216#248#234#216#246#224#193#245#222#192 + +#128'PK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#212#152'u'#253#249 + +#245#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254 + +#255#254#254#255#254#254#255#254#254#253#249#245#251#242#234#251#242#234#250 + +#238#222#248#234#216#248#234#216#246#224#193#128'PK'#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#212#152'u'#255#254#254#255#254#254#255#254#254#255 + +#254#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254 + +#254#255#254#254#253#249#245#254#247#241#251#242#230#248#234#216#248#234#216 + +#246#224#193#128'PK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#207 + +#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207 + +#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#207 + +#142'h'#207#142'h'#207#142'h'#207#142'h'#207#142'h'#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDADataDictionary','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#255#0#255#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#255#0#255#255#0#255#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#255#0#255#255#0#255#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#255#0#255#255#0#255#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#255#255#255#128#0#0#128#0#0 + +#255#255#255#255#255#255#128#0#0'@'#0#0#15'A'#180#15'@'#178#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#206#139 + +'bIg'#166#17'G'#189#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#215#137'^'#226#149'_'#238#172'u' + +#131#142#172#19'N'#198#19'N'#198#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#31'w'#254'e'#151#217#252#209 + +#160#252#209#160#252#209#161#252#211#163#252#211#164#244#197#156#247#203#160 + +#213#132'U'#220#138'W'#234#169'x'#247#206#169#215#202#197'Bw'#211#21'U'#208 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#31'x' + +#255#31'x'#255#220#206#187#254#218#178#254#220#181#254#221#183#254#221#184 + +#254#222#187#237#191#159#220#153't'#209'zK'#227#151'b'#246#201#159#248#216 + +#186#251#229#208#252#238#225#138#175#229'#f'#218#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255')m'#207'tgN'#254#224#187#254#230#201#254 + +#230#202#254#231#204#254#231#206#243#207#178#239#196#165#220#153'r'#233#163 + +'l'#233#167'w'#247#211#177#250#225#201#251#235#220#254#243#234#254#250#244 + +#203#221#246'9{'#230#24'b'#225#255#0#255#255#0#255#255#0#255#31'x'#255'fe[' + +#255#164'5'#254#238#217#254#238#218#254#239#220#254#239#221#254#239#222#244 + +#216#193#239#203#178#211#128'S'#212'{J'#237#178#135#248#220#193#251#231#213 + +#252#240#230#254#247#242#255#251#248#255#254#254#221#234#252#26'h'#234#26'f' + +#231#255#0#255#255#0#255#31'x'#255#175'u,'#255#192'm'#255#244#231#255#244#233 + +#255#246#234#255#246#234#252#237#224#233#183#153#221#156'w'#213#130'S'#233 + +#166'w'#247#209#178#233#213#194#252#238#225#254#246#238#254#250#246#255#254 + +#252#255#255#255#218#198#198'?\'#153#28'm'#240#255#0#255#255#0#255#31']'#164 + +#30#188'L'#206#238#207#255#248#242#255#250#243#255#250#243#255#250#244#244 + +#217#199#243#213#194#220#158'{'#230#164'u'#233#170''#250#224#199#157#154#149 + +#158#157#153#235#231#227#255#252#250#255#255#254#255#255#255#202#151#151'po' + +#150#29's'#247#255#0#255#31'x'#255#31'eS'#30#188'L'#255#252#248#255#252#250 + +#255#252#250#255#252#250#255#252#250#248#233#224#238#202#180#208'}P'#213#128 + +'O'#240#192#156#251#231#212#252#240#229#217#213#208#142#144#142#183#184#183 + +#255#255#255#247#238#238#191#129#129'7f'#181#255#0#255#255#0#255#31'p'#237#25 + +'lYl'#193#169#255#254#252#255#254#252#255#254#254#255#255#254#252#244#239#229 + +#173#143#224#164#130#217#139']'#238#186#146#248#221#197#252#237#222#254#244 + +#237#254#250#246#255#254#251#183#184#183#201#202#201#206#227#255'\}'#197#31 + +'x'#255#255#0#255#255#0#255#28'S'#176#0#30#255#193#206#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#224#166#135#225#157 + +'r'#230#165'z'#225#211#196#217#211#202#254#248#243#255#252#250#255#254#254 + +#255#255#255#255#255#255'f'#167#255#31'x'#255#255#0#255#255#0#255#255#0#255 + +#17'7'#176#0#30#255#255#255#255#255#255#255#255#255#255#255#255#255#189#220 + +#255'z'#180#255'?'#143#255#31'x'#255''#167#221#251#230#211#234#224#213#158 + +#158#154#158#159#157#237#235#234#255#255#255#255#255#255#255#255#255')'#128 + ,#255#31'x'#255#255#0#255#255#0#255#31'x'#255#21'_'#255#132#171#255#238#246 + +#255#175#211#255'r'#175#255'/'#132#255'/'#132#255#255#0#255#255#0#255#255#0 + +#255#255#0#255'D'#144#248#220#227#238#254#250#246#218#218#216#142#144#143#183 + +#186#184#255#255#255#159#202#255#31'x'#255#31'x'#255#255#0#255#255#0#255#31 + +'x'#255#31'x'#255#31'x'#255#31'x'#255#31'x'#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'-'#131#254#144#192#252#255 + +#254#254#255#255#255#192#193#192#246#246#246'L'#152#255#31'x'#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255']'#163#255#238#246#255#255#255#255#175#211#255#31'x'#255 + +#31'x'#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#31'x'#255#31'x'#255#31'x' + +#255#31'x'#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#31'x'#255#31'x'#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +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''#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''#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'H' + +'JK'#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'HJK' + +'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'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'L' + +'NOHJKHJKHJKHJKHJK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#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''#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'U' + +'WX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132''#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'UW' + +'X'#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('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''#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'U' + +'WX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132''#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'UW' + +'X'#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('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''#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'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''#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'o' + +'WAb'#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''#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'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'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('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('TDADesigntimeCall','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#1'2'#2 + +#1'2'#2#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#2'p'#7#1'J'#4#1'2'#2#1'2'#2 + +#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#3#166#12#3 + +#166#12#3'{'#9#1'J'#4#1'2'#2#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#3#154#11#3 + +#154#11#3#166#12#3#166#12#2'l'#7#1'2'#2#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#3#166#12#3#166#12 + +#3#154#11#3#166#12#3#166#12#2'l'#7#1'2'#2#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#3#154#11#3#154#11 + +#3#154#11#3#154#11#3#166#12#3#166#12#2'l'#7#1'2'#2#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#3#154#11#3#166#12#3 + +#154#11#3#166#12#3#154#11#3#166#12#3#166#12#1'J'#4#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#3 + +#166#12#3#154#11#3#154#11#3#154#11#3#154#11#3#154#11#3#166#12#3'{'#9#1'2'#2 + +#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#154#11#3#154#11#3#166#12#3#154#11 + +#3#166#12#3#154#11#3#166#12#3#154#11#3#166#12#1'@'#3#255#0#255#1'J'#4#7'i'#20 + +#28#184'P'#25#177'A'#20#175'A'#218#244#225#246#252#246'#'#176'-'#3#154#11#3 + +#166#12#3#154#11#3#154#11#3#166#12' '#175'+.'#181'9'#3#154#11#3#166#12#3#154 + +#11#3#154#11#3#154#11#3#166#12#3#166#12#1'Y'#5#2'='#4#1'Y'#5#13#128'#!'#186 + +'V'#28#178'N'#20#175'A'#218#244#225#255#255#255#153#222#160#8#163#25#8#163#25 + +#6#164#21#8#163#25#8#161#22'='#187'G'#231#247#233'Y'#199'c'#3#154#11#3#166#12 + +#3#154#11#3#166#12#3#154#11#3#166#12#2'p'#7#2'='#4#1'Y'#5#19#144'/*'#191'`' + +#30#180'P"'#181'T'#181#233#199#255#255#255#255#255#255#134#217#160')'#183'Q' + +#25#177'A'#28#178'N)'#183'Q1'#182'?'#255#255#255#255#255#255'r'#208'z'#3#154 + +#11#3#166#12#3#154#11#3#154#11#3#166#12#3#129#9#1'2'#2#2'l'#7#29#154'9C'#197 + +'s"'#181'T"'#181'Tc'#206#138#255#255#255#255#255#255#255#255#255#202#239#216 + +'}'#215#158'W'#202#128'W'#202#128#132#216#144#255#255#255#255#255#255#255#255 + +#255#146#220#153#8#163#25#3#154#11#3#166#12#3#166#12#3#129#9#1'@'#3#4'm'#8#29 + +#154'9\'#208#137'9'#191'h"'#181'T('#184'Y'#183#234#202#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#178#230#186'1'#182'?'#3#154#11#3#166#12 + +#3#129#9#2'='#4#3'u'#9#26#150'0l'#212#149'Y'#205#133'"'#181'T"'#181'T9'#191 + +'h'#192#237#209#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#159 + +#225#175#6#164#21#3#166#12#4'm'#8#2'='#4#255#0#255#14#139#28'l'#212#149#134 + +#217#160'='#192'k'#22#175'I"'#181'T('#184'Y'#140#220#170#230#248#237#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#178#230#186'#'#178';'#4#159#17#3#166#12#1'Y'#5#255#0#255#255#0 + +#255#15#146#28'I'#193'l'#167#230#192'v'#213#152'('#184'Y'#22#175'I"'#181'T"' + +#181'T9'#191'hv'#213#152#177#231#198#208#242#221#246#252#246#255#255#255#255 + +#255#255#255#255#255#147#221#163#22#171'-'#8#163#25#6#164#21#4#159#17#1'@'#3 + +#255#0#255#255#0#255#255#0#255#26#161'1'#154#227#186#181#233#199'Y'#205#133 + +'"'#181'T'#20#175'A'#30#180'P"'#181'T"'#181'T"'#181'T9'#191'h'#159#225#175 + +#255#255#255#255#255#255'z'#212#138#22#171'-'#12#167'$'#8#163#25#9#176#28#3 + +'u'#9#255#0#255#255#0#255#255#0#255#255#0#255'('#161'2I'#193'l'#183#234#202 + +#183#234#202'W'#202#128'('#184'Y'#22#175'I'#30#180'P"'#181'T'#30#180'P'#30 + +#180'P'#147#222#175#246#252#246'Y'#205#133#16#170'0'#16#170'0'#12#173''''#12 + +#173''''#12#167'$'#1'@'#3#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#20#156'$k'#209#139#192#237#209#189#237#208'v'#213#152'9'#191'h"'#181'T'#28 + +#178'N('#184'Y"'#181'Tl'#212#149'Y'#205#133#25#177'A'#25#177'A'#21#166'<'#16 + +#170'0'#15#176'-'#5'_'#13#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#21#151'$l'#212#149#192#237#209#208#242#221#164#227#188 + ,'l'#212#149'P'#198'y9'#191'h('#184'Y='#192'k9'#191'h9'#191'h('#184'Y '#183'L' + +#25#177'A'#7'i'#20#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#28#158'(O'#196's'#154#227#186#189#237#208 + +#192#237#209#183#234#202#154#227#186#140#220#170#129#217#164'l'#212#149'Y' + +#205#133'9'#191'h '#183'L'#7'i'#20#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#28#158 + +'('#26#161'1P'#198'y'#129#217#164#149#226#181#149#226#181#140#220#170'v'#213 + +#152'\'#208#137'9'#191'h'#22#145'2'#5'_'#13#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#28#158'('#26#161'1&'#169'C&'#169'C&'#169'C#' + +#161'@'#19#144'/'#2'l'#7#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('TDADataSource','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#255#0#255#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#255#0#255#255#0#255#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#255#0#255#255#0#255#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#255#0#255#255#0#255#255#0#255#255#0#255#128#0 + +#0#128#0#0#128#0#0#128#0#0#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#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#128#0#0#128#0#0#128#0#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#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#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#255#0#255#255#0#255#255#0#255#128#0 + +#0#255#0#255#255#0#255#128#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#255#0#255#128#0#0#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#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#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#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#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#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#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#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#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 + +#255#255#255#255#255#255#255#255#255#255#255#255#200#208#212#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#128#128#255#0#255#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#255#255#255#200#208#212#200#208 + +#212#255#255#255#200#208#212#255#255#255#200#208#212#200#208#212#200#208#212 + +#200#208#212#200#208#212#200#208#212#255#255#255#128#128#128#255#0#255#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#255#255#255#255#255#255#255#255#255#255#255#255#200#208#212#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#128#128#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0 + +#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#255#255#255#200#208#212 + +#200#208#212#255#255#255#200#208#212#255#255#255#200#208#212#200#208#212#200 + +#208#212#200#208#212#200#208#212#255#255#255#255#255#255#128#128#128#255#0 + +#255#255#0#255#255#0#255#255#0#255#128#0#0#128#0#0#255#0#255#255#0#255#255#0 + +#255#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#200#208#212 + +#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#128#128#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#255#0#255#255#0#255#128#128#128#255#255#255#200#208#212#200 + +#208#212#255#255#255#200#208#212#255#255#255#200#208#212#200#208#212#200#208 + +#212#200#208#212#200#208#212#200#208#212#255#255#255#128#128#128#255#0#255 + +#255#0#255#255#0#255#255#0#255#128#0#0#128#0#0#255#0#255#255#0#255#255#0#255 + +#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#200#208#212#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#128#128#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0 + +#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#255#0 + +#255#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#200#208#212#200#208#212#200#208#212#200#208#212#200 + +#208#212#200#208#212#200#208#212#200#208#212#200#208#212#200#208#212#200#208 + +#212#200#208#212#200#208#212#128#128#128#255#0#255#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#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#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#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('TDADatasetProvider','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#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#255#255#255#255#255#255#255#255#255#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#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#128#128#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#255#255#128#128 + +#128#0#0#0#192#220#192#0#0#0#128#128#128#255#255#255#255#255#255#255#255#255 + +#128#128#128#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#128#128 + +#128#0#0#0#255#255#255#128#128#128#255#255#255#0#0#0#128#128#128#255#255#255 + +#255#255#255#128#128#128#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#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#128#128#128#255#255#255#255#255#255#128#128#128#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#192#220#192#128#128#128#255#255#255#0#0#0#255 + +#255#255#128#128#128#192#220#192#255#255#255#255#255#255#128#128#128#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#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#255 + +#255#255#255#255#128#128#128#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#128#128 + +#128#0#0#0#255#255#255#128#128#128#255#255#255#0#0#0#128#128#128#255#255#255 + +#255#255#255#128#128#128#255#0#255#128#128#128#192#220#192#255#255#255#255 + +#255#255#192#220#192#192#220#192#0#0#0#255#0#255#128#128#128#128#128#128#128 + +#128#128#255#255#255#255#255#255#255#255#255#128#128#128#0#0#0#192#220#192#0 + +#0#0#128#128#128#255#255#255#255#255#255#255#255#255#128#128#128#255#0#255 + +#128#128#128#192#220#192#192#220#192#255#255#255#255#255#255#192#220#192#0#0 + +#0#255#0#255#128#128#128#192#220#192#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#128#128#128#255#0#255#128#128#128#192#220#192 + +#255#255#255#255#255#255#192#220#192#192#220#192#0#0#0#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#255#0#255#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#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#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#192#220#192 + +#255#255#255#255#255#255#255#255#255#192#220#192#0#0#0#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#255#0#255#128#128#128#128#128#128#255#255#255#255#255#255 + +#255#255#255#128#128#128#0#0#0#255#0#255#128#128#128#192#220#192#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#128#128#128#255#0 + +#255#255#0#255#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#255#0#255#255#0#255#128#128#128#255#255#255#128#128#128#255#255#255#255#255 + +#255#255#255#255#128#128#128#0#0#0#192#220#192#0#0#0#128#128#128#255#255#255 + +#255#255#255#255#255#255#128#128#128#255#0#255#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#192#220#192 + +#128#128#128#255#255#255#255#255#255#128#128#128#0#0#0#255#255#255#128#128 + +#128#255#255#255#0#0#0#128#128#128#255#255#255#255#255#255#128#128#128#255#0 + +#255#255#0#255#255#0#255#128#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#128#128#128#255#255#255#128#128#128#255#255#255#255#255#255#0#0#0#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#128#128#255#255 + +#255#255#255#255#128#128#128#255#0#255#255#0#255#255#0#255#128#0#0#255#0#255 + +#128#0#0#255#0#255#255#0#255#255#0#255#128#128#128#192#220#192#128#128#128 + ,#255#255#255#255#255#255#192#220#192#128#128#128#255#255#255#0#0#0#255#255 + +#255#128#128#128#192#220#192#255#255#255#255#255#255#128#128#128#255#0#255 + +#255#0#255#255#0#255#128#0#0#255#0#255#128#0#0#128#0#0#255#0#255#255#0#255 + +#128#128#128#255#255#255#128#128#128#255#255#255#255#255#255#0#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#255#255#255 + +#255#255#128#128#128#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0#128#0#0 + +#128#0#0#128#0#0#255#0#255#128#128#128#192#220#192#128#128#128#255#255#255 + +#255#255#255#128#128#128#0#0#0#255#255#255#128#128#128#255#255#255#0#0#0#128 + +#128#128#255#255#255#255#255#255#128#128#128#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#128#0#0#128#0#0#255#0#255#255#0#255#128#128#128#128#128 + +#128#128#128#128#255#255#255#255#255#255#255#255#255#128#128#128#0#0#0#192 + +#220#192#0#0#0#128#128#128#255#255#255#255#255#255#255#255#255#128#128#128 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0#255#0#255#255#0 + +#255#255#0#255#128#128#128#192#220#192#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#128#128#128#255#0#255#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#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 +]); + +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''#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''#30 + +#233''#30#233''#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('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''#0#0#197'v9'#0#204'>'#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''#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'#131#153#7#9'31*6:CJN'#1#0#0#0'W}'#161#129'rlq'#131#135#10#9 + +'B:-'#7#1#12'@J='#1#0#0'W}'#161#129'rlq'#133#16#12'G'#141'H'#27#0#1#4#23'CJ' + +'%'#1#0'W}'#161#129'rlq'#15'!F'#148#147#139'&'#0#1#9#20'?CJ'#1#0'W}'#161#129 + +'rlq<'#29#20#137#148#146''''#0#4#15' 7?2'#1#0'W}'#161#129'rlq'#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'#131#156'{g_'#24')('#148#1#0#0#0#0#0#0'W}'#161#129'rlq'#131#156'{' + +'h_R'#25#4#1#0#0#0#0#0#0#0'W}'#161#129'rlq'#131#156'{h_]S'#0#0#0#0#0#0#0#0#0 + +'W}'#161#129'rlq'#131#156'{g_]S'#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#131#156 + +'{h_]S'#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#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('TDABinAdapter','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''#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'U' + +'WX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132''#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'UW' + +'X'#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('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''#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' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk new file mode 100644 index 0000000..ed7169f --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk new file mode 100644 index 0000000..927b0b1 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas new file mode 100644 index 0000000..991a562 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas @@ -0,0 +1,81 @@ +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, + {$IFNDEF FPC}uDACDSDataTable,uDADatasetProvider,uDACache,{$ENDIF FPC} + uDARemoteDataAdapter, + {$IFDEF USE_LOCALDATAADAPTER}uDALocalDataAdapter,{$ENDIF} + {$IFDEF MSWINDOWS} + {$IFNDEF FPC} + uDAADODataTable, + {$ENDIF} + {$ENDIF MSWINDOWS} + uDABusinessProcessor, + uDADBSessionManager, + uDAServerLog, + uDAMemDataTable, + uDARemoteCommand, + uDAPoweredByDataAbstractButton; + +{$IFNDEF FPC} + {$R DataAbstract_Core_Glyphs.res} +{$ENDIF} + +procedure Register; +begin + RegisterComponents(DAPalettePageName, + [TDAPoweredByDataAbstractButton, + TDADriverManager, + TDAConnectionManager, + TDASchema, + TDADiagrams, + TDADataDictionary, + TDABin2DataStreamer, + TDAXMLDataStreamer, + TDARemoteDataAdapter, {$IFDEF USE_LOCALDATAADAPTER}TDALocalDataAdapter,{$ENDIF} + {$IFNDEF FPC} + TDADatasetProvider, + {$ENDIF FPC} + TDAMemDataTable, + TDABusinessProcessor, + TDADesigntimeCall, + TDADataSource, + TDARemoteCommand, + 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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj new file mode 100644 index 0000000..81d84c2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg new file mode 100644 index 0000000..6d65c2e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk new file mode 100644 index 0000000..14457eb --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk new file mode 100644 index 0000000..93e1fa3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_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 - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj new file mode 100644 index 0000000..d240db5 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj @@ -0,0 +1,78 @@ + + + {3fb27763-9440-44c3-bb51-17969172e8fe} + DataAbstract_Scripting_D11.dpk + Debug + 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\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script\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 LibraryFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_Scripting_D11.dpk + + + + + MainSource + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dpk new file mode 100644 index 0000000..aa68349 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dproj new file mode 100644 index 0000000..a58aede --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg new file mode 100644 index 0000000..d94514b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof new file mode 100644 index 0000000..75f52a1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk new file mode 100644 index 0000000..4c39879 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof new file mode 100644 index 0000000..97dc0fb --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk new file mode 100644 index 0000000..34f8513 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs new file mode 100644 index 0000000..4501711 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs @@ -0,0 +1,78 @@ +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'' + +#138'~'#143''#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'~'#143''#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''#137'~~'#143'~'#146'~~uff11' + +'1'#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'' + +#136''#142'~pgg111'#255#0#255#255#0#255'KKK'#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''#135'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'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'QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSQQQQQQQ' + +'QQQQQ'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res new file mode 100644 index 0000000..fa5cad1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk new file mode 100644 index 0000000..35f6313 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk new file mode 100644 index 0000000..97b164d --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas new file mode 100644 index 0000000..f71baf2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj new file mode 100644 index 0000000..ddab013 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg new file mode 100644 index 0000000..c44bc25 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk new file mode 100644 index 0000000..9f33f70 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk new file mode 100644 index 0000000..795f67f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj new file mode 100644 index 0000000..58bef6e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg new file mode 100644 index 0000000..e2a8294 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof new file mode 100644 index 0000000..29abd6f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk new file mode 100644 index 0000000..b8c2834 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof new file mode 100644 index 0000000..7e2dfdc --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk new file mode 100644 index 0000000..63ff17e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res new file mode 100644 index 0000000..4a5d497 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas new file mode 100644 index 0000000..5a9be83 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas new file mode 100644 index 0000000..6382a1b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res new file mode 100644 index 0000000..98b7c6e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg new file mode 100644 index 0000000..fbc8cdc --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr new file mode 100644 index 0000000..7d130a8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res new file mode 100644 index 0000000..93f013e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg new file mode 100644 index 0000000..9f8c69f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof new file mode 100644 index 0000000..b542147 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr new file mode 100644 index 0000000..ab5ec53 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res new file mode 100644 index 0000000..84f461e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res new file mode 100644 index 0000000..57e2373 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj new file mode 100644 index 0000000..720c571 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg new file mode 100644 index 0000000..695c614 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof new file mode 100644 index 0000000..593b787 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr new file mode 100644 index 0000000..f00c885 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr new file mode 100644 index 0000000..8efca9c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr new file mode 100644 index 0000000..c81ef35 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res new file mode 100644 index 0000000..449e052 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res new file mode 100644 index 0000000..d7774e2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr new file mode 100644 index 0000000..4c68283 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res new file mode 100644 index 0000000..077daa2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.cfg new file mode 100644 index 0000000..ce504fe --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.dpr new file mode 100644 index 0000000..6282793 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res new file mode 100644 index 0000000..e0b8925 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg new file mode 100644 index 0000000..a0ce1dc --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr new file mode 100644 index 0000000..7f7050b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res new file mode 100644 index 0000000..08ba56e Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res new file mode 100644 index 0000000..d12ca9d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg new file mode 100644 index 0000000..a17abb2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr new file mode 100644 index 0000000..1373b9a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res new file mode 100644 index 0000000..4732a47 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr new file mode 100644 index 0000000..5c46278 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res new file mode 100644 index 0000000..233c4ec Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res new file mode 100644 index 0000000..32c06f3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr new file mode 100644 index 0000000..152fbe5 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res new file mode 100644 index 0000000..790cda2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr new file mode 100644 index 0000000..39dde39 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res new file mode 100644 index 0000000..e1fa180 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr new file mode 100644 index 0000000..971e17b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr new file mode 100644 index 0000000..3a48d91 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res new file mode 100644 index 0000000..46b9c33 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg new file mode 100644 index 0000000..7caebcd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr new file mode 100644 index 0000000..5d47e04 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res new file mode 100644 index 0000000..a096da3 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr new file mode 100644 index 0000000..b2aa1e2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr new file mode 100644 index 0000000..700c0aa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res new file mode 100644 index 0000000..2ca3ed1 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof new file mode 100644 index 0000000..8c8eb5f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr new file mode 100644 index 0000000..615439d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res new file mode 100644 index 0000000..316f711 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj new file mode 100644 index 0000000..584582a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg new file mode 100644 index 0000000..8549342 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr new file mode 100644 index 0000000..dafaf13 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res new file mode 100644 index 0000000..f3000f5 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg new file mode 100644 index 0000000..96a1b9a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr new file mode 100644 index 0000000..a566487 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res new file mode 100644 index 0000000..155b50d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj new file mode 100644 index 0000000..1e97716 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk new file mode 100644 index 0000000..501b019 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk new file mode 100644 index 0000000..503d123 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_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 - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj new file mode 100644 index 0000000..b399aa9 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj @@ -0,0 +1,68 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_ADODriver_D11.dpk + Debug + 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 DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_ADODriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dpk new file mode 100644 index 0000000..9bd8e7c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dproj new file mode 100644 index 0000000..149460f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk new file mode 100644 index 0000000..9a608cd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk new file mode 100644 index 0000000..a1427e8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj new file mode 100644 index 0000000..a34aa65 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk new file mode 100644 index 0000000..d6baf13 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk @@ -0,0 +1,53 @@ +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_Comp_D10; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk new file mode 100644 index 0000000..bd83783 --- /dev/null +++ b/internal/5.0.35.741/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 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_D11, + dbexpress, + xmlrtl, + 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_Comp_D11, + AnyDAC_PhysTDBX_D11, + DbxMetaData; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj new file mode 100644 index 0000000..37cf6a8 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj @@ -0,0 +1,67 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AnyDACDriver_D11.dpk + Debug + 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 + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk new file mode 100644 index 0000000..57f22a5 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk @@ -0,0 +1,51 @@ +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_PhysTDBX_D12; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj new file mode 100644 index 0000000..532bd6a --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj @@ -0,0 +1,157 @@ + + + {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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof new file mode 100644 index 0000000..70f2fea --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk new file mode 100644 index 0000000..f744ae2 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk @@ -0,0 +1,53 @@ +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_Comp_D6; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg new file mode 100644 index 0000000..f33a910 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof new file mode 100644 index 0000000..f8327e9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk new file mode 100644 index 0000000..47a39c3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk @@ -0,0 +1,53 @@ +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_Comp_D7; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.lrs new file mode 100644 index 0000000..6f651d1 --- /dev/null +++ b/internal/5.0.35.741/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''#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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..a937aad --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj new file mode 100644 index 0000000..f5afeb9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk new file mode 100644 index 0000000..de3b837 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk new file mode 100644 index 0000000..073cecc --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_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 - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D11; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj new file mode 100644 index 0000000..2d9757f --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {3cd4ddcd-76f8-4583-8117-c00562cb6a62} + DataAbstract_BDEDriver_D11.dpk + Debug + 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 DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_BDEDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dpk new file mode 100644 index 0000000..806569a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dproj new file mode 100644 index 0000000..07c3f28 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk new file mode 100644 index 0000000..aceb56d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg new file mode 100644 index 0000000..8e0bad7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk new file mode 100644 index 0000000..a5b4538 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj new file mode 100644 index 0000000..096f1d8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk new file mode 100644 index 0000000..b21161d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk new file mode 100644 index 0000000..2ba6953 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_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 - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D11, + DataAbstract_Core_D11, + db324d2007r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj new file mode 100644 index 0000000..15260b2 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj @@ -0,0 +1,63 @@ + + + {18f879f9-5865-46a9-8515-d3b4503d16ff} + DataAbstract_DBISAMDriver_D11.dpk + Debug + 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 + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dpk new file mode 100644 index 0000000..db50a91 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dproj new file mode 100644 index 0000000..19951b8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof new file mode 100644 index 0000000..1e36acf --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk new file mode 100644 index 0000000..f1b37bf --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg new file mode 100644 index 0000000..02179cd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof new file mode 100644 index 0000000..2d15714 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk new file mode 100644 index 0000000..6a2ee23 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj new file mode 100644 index 0000000..214c011 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk new file mode 100644 index 0000000..ce917fe --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk new file mode 100644 index 0000000..d3298fa --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk @@ -0,0 +1,38 @@ +package DataAbstract_DBXDriver_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 - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D11; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj new file mode 100644 index 0000000..071e5f3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj @@ -0,0 +1,72 @@ + + + {f8cd0c64-f9cd-46d4-8a1b-03d6a3efbdb3} + DataAbstract_DBXDriver_D11.dpk + Debug + 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 DriverFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_DBXDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk new file mode 100644 index 0000000..35f7066 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk @@ -0,0 +1,38 @@ +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; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj new file mode 100644 index 0000000..7ef561d --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj @@ -0,0 +1,97 @@ + + + {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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof new file mode 100644 index 0000000..d2de85f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk new file mode 100644 index 0000000..d9265ff --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof new file mode 100644 index 0000000..7f90f99 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk new file mode 100644 index 0000000..a20bd62 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.bdsproj new file mode 100644 index 0000000..9e97b99 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.cfg new file mode 100644 index 0000000..ec7d8d2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.dpk new file mode 100644 index 0000000..15b25df --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dpk new file mode 100644 index 0000000..150f485 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dproj new file mode 100644 index 0000000..28b9bc0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dpk new file mode 100644 index 0000000..166b374 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dproj new file mode 100644 index 0000000..d9bf6ae --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.cfg new file mode 100644 index 0000000..ce65bb4 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dof new file mode 100644 index 0000000..3c9cab7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dpk new file mode 100644 index 0000000..4eff87c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.cfg new file mode 100644 index 0000000..e5c2492 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dof new file mode 100644 index 0000000..b369898 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dpk new file mode 100644 index 0000000..fc81f64 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.bdsproj new file mode 100644 index 0000000..213d43f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.cfg new file mode 100644 index 0000000..1ff2976 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.dpk new file mode 100644 index 0000000..5b58a97 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg new file mode 100644 index 0000000..4e931fa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj new file mode 100644 index 0000000..47a24e4 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk new file mode 100644 index 0000000..b6773b6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk new file mode 100644 index 0000000..bd44fbd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj new file mode 100644 index 0000000..d04db30 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_ElevateDBDriver_D11.dpk + Debug + 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 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dpk new file mode 100644 index 0000000..0eb30af --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj new file mode 100644 index 0000000..dfe92dd --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof new file mode 100644 index 0000000..0c3ea83 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk new file mode 100644 index 0000000..5e5f141 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof new file mode 100644 index 0000000..9e696f5 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk new file mode 100644 index 0000000..c2f5f25 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj new file mode 100644 index 0000000..239dc3d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk new file mode 100644 index 0000000..6b4fd10 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk new file mode 100644 index 0000000..d35cd4a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj new file mode 100644 index 0000000..f73572b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dpk new file mode 100644 index 0000000..07031d1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dproj new file mode 100644 index 0000000..67a3d3b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof new file mode 100644 index 0000000..c96c6c8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk new file mode 100644 index 0000000..0447c56 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof new file mode 100644 index 0000000..ccdfd7b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk new file mode 100644 index 0000000..8ecc150 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj new file mode 100644 index 0000000..8d350cb --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk new file mode 100644 index 0000000..032d677 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk new file mode 100644 index 0000000..6cd7bb8 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_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 IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac105, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj new file mode 100644 index 0000000..bfcbf1a --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {0d0e2131-7a05-4241-9ca1-f98aea2eb9d9} + DataAbstract_IBDACDriver_D11.dpk + Debug + 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 + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dpk new file mode 100644 index 0000000..980ce55 --- /dev/null +++ b/internal/5.0.35.741/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, + IBdac12, + RemObjects_Core_D12, + DataAbstract_Core_D12; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dproj new file mode 100644 index 0000000..014d532 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg new file mode 100644 index 0000000..51b688e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof new file mode 100644 index 0000000..0cbf2a3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk new file mode 100644 index 0000000..6975ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg new file mode 100644 index 0000000..4c8862b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof new file mode 100644 index 0000000..f69663d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk new file mode 100644 index 0000000..3fd2f36 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj new file mode 100644 index 0000000..00d9b79 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk new file mode 100644 index 0000000..ef0bb3f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk new file mode 100644 index 0000000..d20f478 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_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 Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + IBO40TRT_D2007, + IBO40XRT_D2007; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj new file mode 100644 index 0000000..15f3a0b --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj @@ -0,0 +1,70 @@ + + + + {8dcafd0d-ab98-4b7e-8b86-36dbc593e504} + DataAbstract_IBODriver_D11.dpk + Debug + 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 + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dpk new file mode 100644 index 0000000..2056b9a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dproj new file mode 100644 index 0000000..f65fa8f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof new file mode 100644 index 0000000..533614b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk new file mode 100644 index 0000000..1238d53 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof new file mode 100644 index 0000000..b8f8fb1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk new file mode 100644 index 0000000..d4562dc --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj new file mode 100644 index 0000000..ba3a5e6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk new file mode 100644 index 0000000..33c10ef --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk new file mode 100644 index 0000000..f4f4afd --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj new file mode 100644 index 0000000..812d141 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dpk new file mode 100644 index 0000000..5f919cf --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dproj new file mode 100644 index 0000000..fdd0d82 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof new file mode 100644 index 0000000..220d444 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk new file mode 100644 index 0000000..98c5ffa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof new file mode 100644 index 0000000..933b8c1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk new file mode 100644 index 0000000..7c15b6b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj new file mode 100644 index 0000000..f023fd3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk new file mode 100644 index 0000000..7d302e2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk new file mode 100644 index 0000000..9a0e35d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj new file mode 100644 index 0000000..dec5987 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dpk new file mode 100644 index 0000000..7e659ce --- /dev/null +++ b/internal/5.0.35.741/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, + dac12, + mydac12, + DataAbstract_Core_D12; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dproj new file mode 100644 index 0000000..addf263 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg new file mode 100644 index 0000000..481e4c1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof new file mode 100644 index 0000000..468bfc4 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk new file mode 100644 index 0000000..3886fc7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof new file mode 100644 index 0000000..d99f972 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk new file mode 100644 index 0000000..a90f1f3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj new file mode 100644 index 0000000..98d0a00 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk new file mode 100644 index 0000000..835b724 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk new file mode 100644 index 0000000..55e6cc5 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj new file mode 100644 index 0000000..ebd8da3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj @@ -0,0 +1,69 @@ + + + {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 + + + + + + + + + + \ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dpk new file mode 100644 index 0000000..9a3dd0e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dproj new file mode 100644 index 0000000..8eec613 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk new file mode 100644 index 0000000..66a1e6c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk new file mode 100644 index 0000000..994ed6b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj new file mode 100644 index 0000000..05fd89b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg new file mode 100644 index 0000000..ab68ed8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk new file mode 100644 index 0000000..5ab0396 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk new file mode 100644 index 0000000..4ffe8e1 --- /dev/null +++ b/internal/5.0.35.741/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, + NexusDB207ll110, + NexusDB207se110, + NexusDB207sr110, + NexusDB207sd110, + NexusDB207sq110, + NexusDB207re110, + NexusDB207pt110, + NexusDB207tn110, + NexusDB207tw110, + NexusDB207db110; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj new file mode 100644 index 0000000..52343f9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk new file mode 100644 index 0000000..7711aae --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk @@ -0,0 +1,45 @@ +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, + NexusDB207ll120, + NexusDB207se120, + NexusDB207sr120, + NexusDB207sd120, + NexusDB207sq120, + NexusDB207re120, + NexusDB207pt120, + NexusDB207tn120, + NexusDB207tw120, + NexusDB207db120; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dproj new file mode 100644 index 0000000..e683a67 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg new file mode 100644 index 0000000..c7cbecf --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof new file mode 100644 index 0000000..dcd6c63 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk new file mode 100644 index 0000000..f2b9bec --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg new file mode 100644 index 0000000..d772b58 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof new file mode 100644 index 0000000..3a86bcb --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk new file mode 100644 index 0000000..66eb10a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj new file mode 100644 index 0000000..01bb3ad --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk new file mode 100644 index 0000000..78921ea --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk new file mode 100644 index 0000000..92f4d48 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj new file mode 100644 index 0000000..7d8ed75 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dpk new file mode 100644 index 0000000..49a0044 --- /dev/null +++ b/internal/5.0.35.741/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, + dac12, + DataAbstract_Core_D12, + odac12; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dproj new file mode 100644 index 0000000..16668d0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof new file mode 100644 index 0000000..e6a8cb6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk new file mode 100644 index 0000000..debd426 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof new file mode 100644 index 0000000..b6566eb --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk new file mode 100644 index 0000000..06e9940 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj new file mode 100644 index 0000000..d3a6db6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk new file mode 100644 index 0000000..424def4 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk new file mode 100644 index 0000000..14e92ab --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj new file mode 100644 index 0000000..1233566 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dpk new file mode 100644 index 0000000..162af52 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dproj new file mode 100644 index 0000000..cc12094 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk new file mode 100644 index 0000000..b7803fe --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk new file mode 100644 index 0000000..37c6d74 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj new file mode 100644 index 0000000..d05f343 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk new file mode 100644 index 0000000..a7067e9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk new file mode 100644 index 0000000..40d1424 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj new file mode 100644 index 0000000..4c5409b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dpk new file mode 100644 index 0000000..2a066c3 --- /dev/null +++ b/internal/5.0.35.741/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, + dac12, + sdac12, + DataAbstract_Core_D12; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dproj new file mode 100644 index 0000000..6641211 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof new file mode 100644 index 0000000..a6cb4e4 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk new file mode 100644 index 0000000..6f3c3e6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof new file mode 100644 index 0000000..42ca991 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk new file mode 100644 index 0000000..ca1d337 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj new file mode 100644 index 0000000..4acf23e --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk new file mode 100644 index 0000000..e678ec2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk new file mode 100644 index 0000000..ba6edaa --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj new file mode 100644 index 0000000..ed142b2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dpk new file mode 100644 index 0000000..201d328 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dproj new file mode 100644 index 0000000..e23601c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg new file mode 100644 index 0000000..4730510 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof new file mode 100644 index 0000000..1fb3129 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk new file mode 100644 index 0000000..81be681 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg new file mode 100644 index 0000000..5cf57a8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof new file mode 100644 index 0000000..94c4d85 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk new file mode 100644 index 0000000..0265195 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk new file mode 100644 index 0000000..5c89f27 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..a8fa43b --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj new file mode 100644 index 0000000..267567e --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk new file mode 100644 index 0000000..fa6c962 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk new file mode 100644 index 0000000..8483957 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj new file mode 100644 index 0000000..5711217 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dpk new file mode 100644 index 0000000..7a4343f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dproj new file mode 100644 index 0000000..22b6b80 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof new file mode 100644 index 0000000..1972ae0 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk new file mode 100644 index 0000000..95dba7c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof new file mode 100644 index 0000000..cb208b6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk new file mode 100644 index 0000000..9cac616 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs new file mode 100644 index 0000000..5e84941 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs @@ -0,0 +1,165 @@ +LazarusResources.Add('TDAZEOSDriver','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''#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'%'#215#254#13#199#254#26#204#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#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#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#0#0#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#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#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 + +#0#0#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#128#128#128#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#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#0#0#0#255#0#255#255#0#255#2't'#169 + +'c'#213#226#152#250#254#159#247#255#146#247#254#149#255#254#130#255#254#128 + +#128#128#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#128#0#0#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#178#213#227#248#255#255#221#255 + +#255#193#255#255#166#255#254#142#255#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#128#0#0#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'M'#156#187#235#244#248#242#255#255#213#255#255#186#255#254#159 + +#255#254#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#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#0#0#0#255#0#255#255#0#255#255#0#255#2't'#169#5'x'#172'b'#175#201'b'#175 + +#201#142#213#227'{'#213#226#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#0#0#0#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#2't'#169#2't'#169#2't'#169#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#255#0#255 +]); +LazarusResources.Add('TDAZEOSDriver32','BMP',[ + 'BM6'#8#0#0#0#0#0#0'6'#4#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0#8#0#0#0#0#0#0#4#0 + +#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#255#0#255#0''#28#0#0'2Yb'#0#30'i|'#0'1v' + +#0'__C'#0'Yue'#0'`wa'#0#129#29#0#0#133'"'#1#0#139'%'#0#0#142'-'#9#0#148'-'#0 + +#0#149'2'#6#0#156'3'#0#0#149'7'#15#0#145'4'#19#0#150'8'#17#0#148':'#27#0#160 + +'5'#0#0#164'8'#1#0#151'K'#15#0#158'R'#14#0#155'P'#30#0#172'@'#0#0#175'L'#13#0 + +#177'D'#1#0#177'I'#0#0#186'L'#0#0#176'O'#12#0#166'H'#18#0#160'G'#30#0#175'U' + +#27#0#175'g'#18#0#150'C)'#0#128'[/'#0#155'M8'#0#158'P8'#0#173'V"'#0#175']-'#0 + +#161'P0'#0#189'c"'#0#179'd7'#0#176'c9'#0#196'U'#1#0#192'W'#11#0#193'\'#9#0 + +#209'Z'#0#0#199'\'#16#0#199'd'#3#0#204'b'#3#0#199'l'#4#0#202'm'#7#0#197'n'#8 + +#0#211'c'#0#0#221'e'#0#0#214'i'#0#0#219'k'#0#0#216'k'#8#0#218'q'#15#0#221'x' + +#14#0#199'c'#19#0#208'm'#21#0#220'm'#16#0#204'r'#17#0#213'v'#23#0#229'k'#0#0 + +#233'o'#1#0#224'm'#10#0#233'v'#2#0#247'z'#0#0#165'^H'#0#166'bN'#0#179'vd'#0 + +#181'|l'#0#193'{M'#0'g'#137'l'#0's'#141'b'#0'd'#156'y'#0's'#144'u'#0'|'#157 + +'v'#0'o'#163'}'#0#254#129#0#0#245#131#8#0#247#137#12#0#252#137#9#0#248#137#18 + +#0#255#147#16#0#250#149#28#0#255#153#27#0#222#130')'#0#225#135''''#0#255#155 + +'"'#0#249#148'*'#0#247#157'.'#0#251#154'+'#0#255#160'&'#0#255#161','#0#247 + +#161'6'#0#254#165'4'#0#245#163'>'#0#255#169'<'#0#154#134'@'#0#149#142'O'#0 + +#164#140'M'#0#162#150'\'#0#135#144'v'#0#188#135'l'#0#163#151'`'#0#164#169'x' + +#0#205#132'H'#0#209#137'F'#0#219#143'H'#0#198#132'W'#0#213#147'V'#0#216#149 + +'S'#0#226#148'B'#0#248#162'E'#0#255#172'B'#0#255#177'L'#0#243#170'P'#0#255 + +#180'S'#0#255#185'\'#0#238#182'j'#0#241#178'a'#0#254#187'b'#0#249#189'l'#0 + +#242#187'q'#0#255#193'l'#0#255#196'r'#0#255#201'~'#0#4'e'#148#0#10'f'#149#0#7 + +'i'#150#0#10'h'#150#0#7'o'#158#0#11'l'#153#0#19'l'#153#0#10'p'#157#0#23'r' + +#158#0#11'u'#165#0#9''#175#0#20'y'#162#0#0'~'#186#0'&z'#162#0#29#132#170#0#0 + +#129#189#0#22#138#177#0#24#147#188#0'*'#134#171#0'3'#143#165#0'7'#132#169#0 + +';'#134#171#0'>'#136#172#0' '#141#178#0'<'#141#176#0'5'#173#171#0'/'#170#181 + +#0'?'#172#180#0'3'#160#190#0'+'#176#184#0'R'#152#134#0'y'#153#131#0'K'#161 + +#146#0'l'#166#130#0'C'#140#175#0'Y'#152#184#0'c'#159#188#0'K'#175#169#0'e' + +#160#189#0#6#138#195#0#9#147#201#0'#'#159#200#0#29#161#210#0#25#175#217#0'%' + +#177#211#0'?'#183#219#0#15#187#235#0':'#185#224#0'Z'#171#197#0'D'#183#204#0 + +'f'#163#192#0'z'#174#198#0'l'#188#209#0#30#194#234#0#10#197#253#0#15#204#254 + +#0#16#197#246#0#16#203#254#0#30#205#254#0'('#201#238#0')'#213#246#0'#'#213 + +#253#0'6'#213#254#0'7'#228#254#0':'#224#254#0'F'#195#215#0'W'#199#216#0'\' + +#209#223#0'j'#202#218#0'q'#198#216#0'_'#209#238#0'O'#221#255#0'R'#218#253#0 + +'`'#210#239#0'I'#232#253#0'R'#236#253#0'['#242#254#0'o'#231#238#0'i'#230#252 + +#0's'#237#254#0'b'#242#254#0'm'#247#254#0'n'#248#254#0'z'#242#252#0'v'#251 + +#254#0'|'#250#253#0#132#167#132#0#242#194#133#0#248#198#133#0#254#203#131#0 + +#243#198#139#0#246#203#141#0#255#209#144#0#253#213#154#0#254#218#163#0#255 + +#220#169#0#255#225#181#0#255#228#187#0#129#178#201#0#154#224#234#0#129#230 + +#251#0#143#247#254#0#130#254#254#0#139#255#254#0#150#255#254#0#167#236#243#0 + +#164#255#254#0#169#252#254#0#180#254#253#0#187#255#254#0#255#230#195#0#255 + +#232#197#0#255#235#205#0#255#237#211#0#255#239#216#0#255#240#218#0#194#221 + +#232#0#201#225#234#0#200#255#254#0#211#255#255#0#255#243#226#0#255#245#233#0 + +#255#248#239#0#229#254#255#0#251#253#253#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#180 + +#0#0#0'j'#13#11#16#18#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#135#131#131#131#131 + +#135#135#135#3#1#1#9'|{'#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#146#131#131#170#174 + +#177#177#159'O'#162'j'#18#1#1')zl'#5#0#0#0#0#0#0#0#0#0#0#0#0#135#135#176#206 + +#195#189#188#159#26#12#12'/,'#14#25'bwz'#128'K#'#5#5#5#0#0#0#0#0#0#0#0#131 + +#208#213#206#195#192#188'L'#19#9#19'W\\`cewz~'#222#224#226#11#0#0#0#0#0#0#0#0 + +#135#216#213#206#195#192#188#161#24#12#19'acaaacew}'#129#220#222'"'#0#0#0#0#0 + +#0#0#0#135#216#213#206#195#192#188#160#28#19#12'awcaaacey}'#129'rj'#0#0#0#0#0 + +#0#0#0#135#216#213#206#195#192#188#156','#19#19'd~w`S.=^ey}nH'#0#0#0#0#0#0#0 + +#0#135#234#213#206#195#192'N1'#28#26'p'#220#223#128'S'#27#12#1#13'cvy}('#5#0 + +#0#0#0#0#0#0#135#216#213#206#195'Q6,0'#218#228#241#226#128';'#6#21#9#1'>cvy~' + +'K#'#0#0#0#0#0#0#135#216#213#206#195'f6/t'#241#251#246#241#130'>'#150'#'#12#9 + +'.cevz'#128#16#0#0#0#0#0#0#135#216#213#206#195#164'77?'#224#244#251#246#225 + +'['#6#22#19#12'Daeewt('#0#0#0#0#0#0#135#234#213#206#195#191'g67?'#219#242#251 + +#244#128'.'#26#20#26'Uccc['#31#0#0#0#0#0#0#0#135#216#216#232#238#239#236'l8B' + +'D'#226#252#251#241'~ZAYcccY'#30#0#0#0#0#0#0#0#0#135#240#230#179#149#134#131 + +#3'9EC'#224#252#252#251#242#225#220#220'}vcV('#0#0#0#0#0#0#0#0#135#149#131 + +#147#175#184#187#163'EFV'#227#253#253#252#251#244#228#224#220'}vU'#23#0#0#0#0 + +#0#0#0#0#131#159#209#207#195#192#186'MFFa'#241#246#241#242#251#251#244#226 + +#128'wvU'#21#0#0#0#0#0#0#0#0#135#216#213#206#195#192#188#163'9F;~x]u'#227#252 + +#246#220'A><1h'#0#0#0#0#0#0#0#0#135#216#213#206#195#192#188#186#168'P'#217'i' + ,'4FF'#128#246#241't'#5#0#0#0#0#0#0#0#0#0#0#0#0#135#216#213#206#195#192#188 + +#187#189#193#202#209'mBRV'#226#222'!'#131#0#0#0#0#0#0#0#0#0#0#0#0#135#216#213 + +#206#195#192#188#187#189#193#202#209#231'h54>@'#4#131#0#0#0#0#0#0#0#0#0#0#0#0 + +#135#234#213#206#195#192#188#187#189#193#202#209#231#204#176#172#147#141#143 + +#131#0#0#0#0#0#0#0#0#0#0#0#0#135#216#213#206#195#192#188#187#189#193#202#209 + +#231#204#178#173#170#143#143#131#0#0#0#0#0#0#0#0#0#0#0#0#135#216#213#206#195 + +#192#188#187#189#193#202#209#231#204#178#173#170#143#143#131#0#0#0#0#0#0#0#0 + +#0#0#0#0#135#216#213#206#195#192#188#185#189#193#202#209#231#204#178#173#170 + +#146#143#131#0#0#0#0#0#0#0#0#0#0#0#0#135#216#213#210#210#216#214#213#216#216 + +#216#216#216#216#201#178#171#143#143#131#0#0#0#0#0#0#0#0#0#0#0#0#135#240#254 + +#254#249#240#237#232#216#216#234#216#234#216#216#213#206#190#171#131#0#0#0#0 + +#0#0#0#0#0#0#0#0#135#255#255#254#254#240#239#237#234#216#234#216#216#234#216 + +#216#211#205#192#131#0#0#0#0#0#0#0#0#0#0#0#0#131#248#255#255#254#250#240#238 + +#235#216#234#216#234#216#234#216#213#211#175#131#0#0#0#0#0#0#0#0#0#0#0#0#143 + +#132#169#247#255#254#249#240#238#232#216#234#216#234#216#234#198#154#131#179 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#135#131#139#155#179#183#200#199#198#197#180#159 + +#145#134#131#152#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#154#152#139#139#132 + +#132#139#144#155#169#0#0#0#0#0#0#0#0#0#0#0 +]); diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk new file mode 100644 index 0000000..091b32e --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk new file mode 100644 index 0000000..ca75cdb --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..4a5c1ef --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas new file mode 100644 index 0000000..6220b65 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas @@ -0,0 +1,5560 @@ +// 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; +{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc new file mode 100644 index 0000000..bbd5e3b --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas new file mode 100644 index 0000000..c880a01 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas @@ -0,0 +1,1736 @@ +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,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 DoGetLastAutoInc(const GeneratorName: string): integer; 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; + 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): Int64; +var + vData: TDecimalVariant absolute V; +begin + 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: Int64): Variant; +var + vd: TDecimalVariant absolute Result; +begin + VarClear(Result); + vd.scale := 0; + if data < 0 then begin + vd.Sign := 128; + data := -data; + end else + vd.sign := 0; + vd.Hi32 := 0; + vd.Mid32 := int64(data shr 32); + vd.Lo32 := data; + 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +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)'; + datInteger: result := 'int'; + datLargeInt: result := 'largeint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + 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) 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 + case fProviderType of + oledb_Oracle: Result:=Oracle_GetNextAutoinc(GeneratorName,CreateCompatibleQuery); + oledb_Postgresql: Result := Postgres_GetNextAutoInc(GeneratorName,CreateCompatibleQuery); + else + Result:=-1; + end; +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; + +{ 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; +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 = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if VarIsEmpty(par.Value) or VarIsNull(par.Value) + then outpar.Value := NULL + else outpar.Value := VariantBinaryToString(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 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; + +{ 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; +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 outpar.Value := NULL + else outpar.Value := VariantBinaryToString(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 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. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas new file mode 100644 index 0000000..ef13940 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas @@ -0,0 +1,2836 @@ +{-------------------------------------------------------------------------------} +{ 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, + 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, + IDASybaseConnection, + IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + IDAUseGenerators, + 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): integer; + 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 DoGetLastAutoInc(const GeneratorName: string): integer; 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} + // 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, + uADStanParam, uADStanConst, uADStanFactory, uADGUIxConsoleWait, uADPhysManager, + uADPhysODBC, uADPhysOracl, uADPhysMySQL, uADPhysMSSQL, uADPhysMSAcc, uADPhysDB2, + uADPhysASA, uADPhysIB, uADPhysADS, uADStanUtil +{$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] then begin + if ASetType then + if oDAPar.BlobType = dabtUnknown then + case oDAPar.DataType of + datMemo: oADPar.DataType := ftMemo; + datBlob: oADPar.DataType := ftBlob; + 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 := VariantBinaryToString(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; + 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; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Initialize; +begin + FConnectionDefs := TStringList.Create; + FConnectionDefs.Sorted := True; + FConnectionDefIndex := 0; + ADManager.Open; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Finalize; +begin + ADManager.Close; +{$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, IDACanQueryDatabaseNames) then begin + if (fDriverType in [mkInterBase, mkMSAccess]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [mkInterBase,mkMSAccess]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) then begin + if not (fDriverType in [mkInterBase, mkOracle]) 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.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): integer; +var + v: Variant; +begin + v := FADConnection.GetLastAutoGenValue(GeneratorName); + if VarIsNull(v) then + Result := -1 + else + Result := v; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoGetLastAutoInc(const GeneratorName: string): integer; +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)); + 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); + 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); + 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); + 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; + 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); + 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); + 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); + 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); + 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 + Result := oledb_Unknown; + // oledb_MSSQL2005 + // oledb_Postgresql + // oleDb_VisualFoxPro +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); + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAFileBasedDatabase + +function TDAEAnyDACConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + mkInterBase: Result := IB_GetFileExtensions; + mkMSAccess: Result := MSACCESS_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAUseGenerators + +function TDAEAnyDACConnection.GetNextAutoinc(const GeneratorName: string): integer; +begin + Result := -1; + case fDriverType of + mkInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + mkOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + end; +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 + 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.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])^ := ADSQLTimeStampToDateTime(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(ADSQLTimeStampToDateTime(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; + +function TDAEAnyDACConnection.GetMySQLVersion: integer; +begin + if FMySQLVersion = -1 then FMySQLVersion := MYSQL_GetVersion(GetDatasetClass.Create(Self)); + Result := FMySQLVersion; +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; + +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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas new file mode 100644 index 0000000..c2507d4 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas @@ -0,0 +1,1209 @@ +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, {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 DoGetLastAutoInc(const GeneratorName: string): integer; 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; + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + public + destructor Destroy; override; + 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; + +type + TDecimalVariant = packed record + VarType: TVarType; + scale: Byte; + sign: Byte; + Hi32: Cardinal; + Lo32: Cardinal; + Mid32: Cardinal; + Dummy: Cardinal; + end; + +function DecimalToInt64(const V: Variant): Int64; +var + vData : TDecimalVariant absolute V; +begin + 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: Int64): Variant; +var + vd : TDecimalVariant absolute Result; +begin + VarClear(Result); + vd.scale := 0; + if data < 0 then begin + vd.Sign := 128; + data := -data; + end else + vd.sign := 0; + vd.Hi32 := 0; + vd.Mid32 := int64(data shr 32); + vd.Lo32 := data; + vd.VarType := 14; +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('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 + 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; +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 + if AnsiSameText(AuxParamNames[i], 'TransIsolation') then begin + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiDirtyRead') then fDatabase.TransIsolation := tiDirtyRead else + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiReadCommitted') then fDatabase.TransIsolation := tiReadCommitted else + if AnsiSameText(AuxParams[AuxParamNames[i]], 'tiRepeatableRead') then fDatabase.TransIsolation := tiRepeatableRead; + end + 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +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 := -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) 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc new file mode 100644 index 0000000..5cf9450 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc @@ -0,0 +1,60 @@ +{ + !!! 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 + 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 := VariantBinaryToString(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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas new file mode 100644 index 0000000..e6c4f61 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas @@ -0,0 +1,1110 @@ +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 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; + + { 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +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].AsInteger; + 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 = datAutoInc 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 := VariantBinaryToString(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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas new file mode 100644 index 0000000..ee6b8a1 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas @@ -0,0 +1,1009 @@ +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} + +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} + ); + +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} + ); + +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 ,{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 DoGetLastAutoInc(const GeneratorName: string): integer; 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; + // 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, INIFiles, uDADriverManager, uDARes, uDAMacroProcessors, Variants, SqlTimSt, + 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 = dbx_Interbase then begin // Dbx requires a seperate host field for Interbase + Params.Values[DATABASENAME_KEY] := Server + ':' + 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 = dbx_Interbase 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: 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: 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: 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: 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: result := IB_GetFileExtensions; + else + result := TROStrings.Create; + end; +end; + +function TDAEDBXConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + dbx_Interbase: 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]) 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) then begin + if not (fDriverType in [dbx_Interbase,dbx_Oracle]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dbx_Interbase]) then Exit; + end + else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dbx_Interbase]) 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: 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: 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: 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + case fDriverType of + dbx_MSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Interbase: 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 + case fDriverType of + dbx_Interbase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Oracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + else + result := -1; + end; +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: 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: 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: 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: 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: 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; + 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; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr new file mode 100644 index 0000000..3e5d914 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas new file mode 100644 index 0000000..6b19ea3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas @@ -0,0 +1,689 @@ +unit uDADOADriver; + +// if using DOA 4.0 or higher activate this define +{$DEFINE DOA4} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +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; + datXml, datWideString: Result := otVarchar2; + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas new file mode 100644 index 0000000..825b143 --- /dev/null +++ b/internal/5.0.35.741/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; + 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); + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas new file mode 100644 index 0000000..d596d87 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas new file mode 100644 index 0000000..98953c0 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas @@ -0,0 +1,566 @@ +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; + 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']); + 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 } + +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; +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; +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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas new file mode 100644 index 0000000..cc2d92a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas new file mode 100644 index 0000000..91693b6 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas @@ -0,0 +1,495 @@ +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 + 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; +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); +begin + 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); +begin + 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; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas new file mode 100644 index 0000000..5f34ca3 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas @@ -0,0 +1,543 @@ +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 + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas new file mode 100644 index 0000000..bc9702a --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr new file mode 100644 index 0000000..52a0cec Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas new file mode 100644 index 0000000..80abb7b --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas @@ -0,0 +1,1146 @@ +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 DoGetLastAutoInc(const GeneratorName: string): integer; 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]; + {$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.DoGetLastAutoInc(const GeneratorName: string): integer; +begin + // dacConnection.Database.GetAutoIncValue(GeneratorName, Cardinal(Result)); // NXDB2: Changed + dacConnection.Database.GetAutoIncValue(GeneratorName, + dacConnection.Session.Password, + Cardinal(Result)); +// 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas new file mode 100644 index 0000000..cd3ab1b --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas @@ -0,0 +1,671 @@ +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): 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): 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): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + if ord(aFieldType) in [ftBFile] then aFieldType:=ftBlob; + Result:= inherited intVCLTypeToDAType(aFieldType); +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): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + Result:= inherited intVCLTypeToDAType(aFieldType); +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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas new file mode 100644 index 0000000..04c711b --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas @@ -0,0 +1,357 @@ +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; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; 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;safecall; + function DoGetSQL: string; override;safecall; + procedure DoSetSQL(const Value: string); override;safecall; + procedure DoPrepare(Value: boolean); override;safecall; + 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.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +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 + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas new file mode 100644 index 0000000..7896c83 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas @@ -0,0 +1,505 @@ +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 := VariantBinaryToString(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 + 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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas new file mode 100644 index 0000000..6577bb6 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas @@ -0,0 +1,373 @@ +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; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + // IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + 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 DoGetLastAutoInc(const GeneratorName: string): integer; override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + Result := fConnection.Connection.GetLastInsertRow; +end; + +procedure TDAESQLiteConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited; + // SQL Features That SQLite Does Not Implement +end; + +{ TDAESQLiteDriver } + +function TDAESQLiteDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doDatabaseName, doCustom]; +end; + +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; + +function TDAESQLiteDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; +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/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas new file mode 100644 index 0000000..ff3d1bc --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas @@ -0,0 +1,1227 @@ +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, + ZDbcIntfs, ZConnection, ZSqlMetadata, + uDAInterfaces, + uDAADOInterfaces, + uDAIBInterfaces, + uDASQLiteInterfaces, + uDAOracleInterfaces, + uDAMySQLInterfaces, + uDADB2Interfaces, + uDASybaseInterfaces, + uDAPostgresInterfaces, + uROClasses, uDAEngine, uDAUtils; + +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, + 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; + 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 DoGetLastAutoInc(const GeneratorName: string): integer; 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} + + { 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, + zClasses, 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) 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); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled) + else begin + lSupportedSchema := ZEOS_GetMetadata.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_GetMetadata.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; +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 := + ZEOS_GetMetadata.GetSQLKeywords + ',' + + ZEOS_GetMetadata.GetNumericFunctions + ',' + + ZEOS_GetMetadata.GetStringFunctions + ',' + + ZEOS_GetMetadata.GetSystemFunctions + ',' + + ZEOS_GetMetadata.GetTimeDateFunctions; + 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.DoGetLastAutoInc( + const GeneratorName: string): integer; +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 := -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; + +procedure TDAESampleConnection.DoGetNames(AList: IROStrings; + AObjectType: TDAObjecttype); +var + lTableTypes : TStringDynArray; + lsupportSchema : Boolean; + lprocname : string; + i : integer; +begin + fNativeConnection.fConnection.Connect; + lsupportSchema := ZEOS_GetMetadata.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_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; + +{ 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 ZEOSDriverIdToZEOSDriverType(AuxDriver) <> dazAdo 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 + // nothing +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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.lrs b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.lrs new file mode 100644 index 0000000..d9a86b7 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc new file mode 100644 index 0000000..d480282 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc @@ -0,0 +1 @@ +DALOGO BITMAP DISCARDABLE "dalogo.bmp" diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj new file mode 100644 index 0000000..67fa8e2 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg new file mode 100644 index 0000000..f6e54d1 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk new file mode 100644 index 0000000..fdc6b17 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk new file mode 100644 index 0000000..aa099c4 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_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 - IDE Package'} +{$IMPLICITBUILD OFF} + +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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj new file mode 100644 index 0000000..9ce7332 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj @@ -0,0 +1,88 @@ + + + {83d4313b-eff3-4ea0-9289-ba6e608e821e} + DataAbstract_IDE_D11.dpk + Debug + 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 PackageFalseFalseFalseTrueFalse306442FalseFalseFalseFalseFalse10331252RemObjects Software3.0.6.442RemObjects SDK1.0.0.0DataAbstract_IDE_D11.dpk + + + + + MainSource + + + + +
DADataTableMasterLinkWizard
+
+ + + +
DAGuideWizardForm
+
+ +
DAIdeData
+ TDataModule +
+ + + + +
DASelectDataTablesForm
+
+
+
\ No newline at end of file diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dpk new file mode 100644 index 0000000..5ffd96f --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj new file mode 100644 index 0000000..dcc42eb --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj @@ -0,0 +1,121 @@ + + + {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;..\..\..\Everwood\Bin;$(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 + -pDelphi + C:\Program Files\CodeGear\RAD Studio\6.0\bin\bds.exe + + + True + False + 5 + 0 + 35 + 741 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 5.0.35.741 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_IDE_D12.dpk + + + + 12 + +
diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.identcache b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.identcache new file mode 100644 index 0000000..f25b077 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.identcache differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res new file mode 100644 index 0000000..da6c4f2 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg new file mode 100644 index 0000000..a95f764 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof new file mode 100644 index 0000000..f1ca4e5 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk new file mode 100644 index 0000000..c2b6298 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg new file mode 100644 index 0000000..5645689 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof new file mode 100644 index 0000000..2b8a3a6 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk new file mode 100644 index 0000000..377b366 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res new file mode 100644 index 0000000..3fd3b9b Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk new file mode 100644 index 0000000..ed53532 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk new file mode 100644 index 0000000..9ee52af --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk new file mode 100644 index 0000000..7cfde89 --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas new file mode 100644 index 0000000..3fad5ff --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas @@ -0,0 +1,184 @@ +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} + +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; + + +procedure Register; +begin + RegisterComponentEditor(TDADriverManager, TDADriverManagerEditor); + RegisterComponentEditor(TDASchema, TDASchemaEditor); + RegisterComponentEditor(TDAConnectionManager, TDAConnectionManagerEditor); + RegisterComponentEditor(TDADataDictionary, TDADataDictionaryEditor); + RegisterComponentEditor(TDADataTable, TDADataTableEditor); + RegisterComponentEditor(TDABaseRemoteDataAdapter, TDABaseRemoteDataAdapterEditor); + 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); + + {$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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES new file mode 100644 index 0000000..bfd676d Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/__history/DataAbstract_IDE_D12.dpk.~1~ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/__history/DataAbstract_IDE_D12.dpk.~1~ new file mode 100644 index 0000000..5ffd96f --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/__history/DataAbstract_IDE_D12.dpk.~1~ @@ -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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm new file mode 100644 index 0000000..1b2f269 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas new file mode 100644 index 0000000..e48152d --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm new file mode 100644 index 0000000..3b17c9c --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas new file mode 100644 index 0000000..c5a26ff --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas new file mode 100644 index 0000000..8ced8e8 --- /dev/null +++ b/internal/5.0.35.741/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/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res new file mode 100644 index 0000000..dd81d99 Binary files /dev/null and b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res differ diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas new file mode 100644 index 0000000..c639cfb --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas @@ -0,0 +1,170 @@ +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, DARemoteService_Impl; + +{ 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 } + +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; + +end. diff --git a/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas new file mode 100644 index 0000000..31279fe --- /dev/null +++ b/internal/5.0.35.741/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas @@ -0,0 +1,1420 @@ +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,uDAClientDataModule, uDADataTable, uDARemoteDataAdapter; + +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: TDABaseRemoteDataAdapter): 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; + + { TDABaseRemoteDataAdapterEditor } + TDABaseRemoteDataAdapterEditor = 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(TDABaseRemoteDataAdapterEditor ) + 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; + +implementation + +uses + + {$IFDEF FPC} + uDADataTableMasterLinkWizardForm_laz, uROIDETools_laz,uDAIDEMenu_laz, + {$ELSE} + uROIDETools, uROIDEMenu, uROPleaseWaitForm, + uDAIDEMenu, uDAPleaseWaitForm, + ToolsAPI, + uDADataTableMasterLinkWizardForm,ShellAPI, + {$ENDIF} + uDAIDEData,uDASchemaUnitsGenerator, + uROLoginNeededForm, + Dialogs, Graphics, Controls, FileCtrl, + 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; + +{$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; + lSchemaAge:integer; + 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; + + 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); + lSchemaAge := FileAge(sfname); + + 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('Don''t 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; + + if lSchemaAge < FileAge(sfname) then begin + + 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: TDABaseRemoteDataAdapter): 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; + ds: TDADataset; + lTempSchema: TDASchema; + lTempSchemaDataSet: TDADataset; + s: string; + lSaved: TROExceptionEvent; +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 TDABaseRemoteDataAdapter).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 begin + dt.LoadSchema(true, true); + 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 + 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 TDABaseRemoteDataAdapter).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 begin + dt.Open(); + 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; +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 + {$IFDEF USE_LOCALDATAADAPTER} + else + Result:= (RemoteDataAdapter as TDALocalDataAdapter).Schema; + {$ENDIF} + 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 = '