diff --git a/.github/workflows/lazarustestLinux.yml b/.github/workflows/lazarustestLinux.yml
index 2485d718..98488830 100644
--- a/.github/workflows/lazarustestLinux.yml
+++ b/.github/workflows/lazarustestLinux.yml
@@ -4,37 +4,67 @@ on:
pull_request:
push:
paths-ignore:
- - "README.md"
+ - "README.md"
branches:
- dev
jobs:
build:
runs-on: ${{ matrix.operating-system }}
+
strategy:
+ fail-fast: false
matrix:
operating-system: [ubuntu-latest]
lazarus-versions: [dist, stable, 2.2.4, 2.2.6]
+
steps:
- - name: Checkout source code
- uses: actions/checkout@v2
- - name: Install Lazarus
- uses: gcarreno/setup-lazarus@v3
- with:
- lazarus-version: ${{ matrix.lazarus-versions }}
- include-packages: "Indy10, ZeosDBO"
- with-cache: false
- - name: Build the Main package on Linux
- run: lazbuild -B "CORE/Packages/Lazarus/RESTDataWareComponents.lpk"
-
- - name: Build Indy package on Linux
- run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk"
-
- - name: Build ShellServices package on Linux
- run: lazbuild -B "CORE/Packages/Lazarus/ShellTools/RESTDWShellServices.lpk"
-
- - name: Build ZeosDriver package on Linux
- run: lazbuild -B "CORE/Packages/Lazarus/Drivers/zeos/RESTDWZeosDriver.lpk"
-
- - name: Build LazarusDriver package on Linux
- run: lazbuild -B "CORE/Packages/Lazarus/Drivers/lazdriver/RESTDWLazarusDriver.lpk"
+ - name: Checkout source code
+ uses: actions/checkout@v4
+
+ - name: Install Lazarus
+ uses: gcarreno/setup-lazarus@v3
+ with:
+ lazarus-version: ${{ matrix.lazarus-versions }}
+ include-packages: "Indy10, ZeosDBO"
+ with-cache: false
+
+ - name: Install TaurusTLS runtime package
+ shell: bash
+ run: |
+ set -euo pipefail
+
+ sudo apt-get update
+ sudo apt-get install -y git libssl-dev
+
+ git clone --depth 1 https://github.com/TurboPack/indy_extras.git "$RUNNER_TEMP/indy_extras"
+
+ TAURUS_LAZ_DIR="$RUNNER_TEMP/indy_extras/TaurusTLS/Packages/lazarus"
+
+ echo "Taurus Lazarus package dir: $TAURUS_LAZ_DIR"
+
+ test -f "$TAURUS_LAZ_DIR/taurustlsrt.lpk"
+
+ lazbuild --primary-config-path="$HOME/.lazarus" \
+ --add-package-link="$TAURUS_LAZ_DIR/taurustlsrt.lpk"
+
+ lazbuild --primary-config-path="$HOME/.lazarus" \
+ -B "$TAURUS_LAZ_DIR/taurustlsrt.lpk"
+
+ - name: Build the Main package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/RESTDataWareComponents.lpk"
+
+ - name: Build Indy package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk"
+
+ - name: Build Taurus package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lpk"
+
+ - name: Build ShellServices package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/ShellTools/RESTDWShellServices.lpk"
+
+ - name: Build ZeosDriver package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/Drivers/zeos/RESTDWZeosDriver.lpk"
+
+ - name: Build LazarusDriver package on Linux
+ run: lazbuild -B "CORE/Packages/Lazarus/Drivers/lazdriver/RESTDWLazarusDriver.lpk"
diff --git a/.github/workflows/lazarustestWindows.yml b/.github/workflows/lazarustestWindows.yml
index c499691d..67543bbf 100644
--- a/.github/workflows/lazarustestWindows.yml
+++ b/.github/workflows/lazarustestWindows.yml
@@ -4,37 +4,64 @@ on:
pull_request:
push:
paths-ignore:
- - "README.md"
+ - "README.md"
branches:
- dev
jobs:
build:
runs-on: ${{ matrix.operating-system }}
+
strategy:
+ fail-fast: false
matrix:
operating-system: [windows-latest]
lazarus-versions: [dist, stable, 2.2.0]
+
steps:
- - name: Checkout source code
- uses: actions/checkout@v2
- - name: Install Lazarus
- uses: gcarreno/setup-lazarus@v3.2
- with:
- lazarus-version: ${{ matrix.lazarus-versions }}
- include-packages: "Indy10, ZeosDBO"
- with-cache: false
- - name: Build the Main package on Windows
- run: lazbuild -B "CORE/Packages/Lazarus/RESTDataWareComponents.lpk"
-
- - name: Build Indy package on Windows
- run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk"
-
- - name: Build ShellServices package on Windows
- run: lazbuild -B "CORE/Packages/Lazarus/ShellTools/RESTDWShellServices.lpk"
-
- - name: Build ZeosDriver package on Windows
- run: lazbuild -B "CORE/Packages/Lazarus/Drivers/zeos/RESTDWZeosDriver.lpk"
-
- - name: Build LazarusDriver package on Windows
- run: lazbuild -B "CORE/Packages/Lazarus/Drivers/lazdriver/RESTDWLazarusDriver.lpk"
+ - name: Checkout source code
+ uses: actions/checkout@v4
+
+ - name: Install Lazarus
+ uses: gcarreno/setup-lazarus@v3.2
+ with:
+ lazarus-version: ${{ matrix.lazarus-versions }}
+ include-packages: "Indy10, ZeosDBO"
+ with-cache: false
+
+ - name: Install TaurusTLS runtime package
+ shell: pwsh
+ run: |
+ $ErrorActionPreference = "Stop"
+
+ git clone --depth 1 https://github.com/TurboPack/indy_extras.git "$env:RUNNER_TEMP\indy_extras"
+
+ $TaurusLazDir = Join-Path $env:RUNNER_TEMP "indy_extras\TaurusTLS\Packages\lazarus"
+ $TaurusRtPkg = Join-Path $TaurusLazDir "taurustlsrt.lpk"
+
+ Write-Host "Taurus Lazarus package dir: $TaurusLazDir"
+
+ if (-not (Test-Path $TaurusRtPkg)) {
+ throw "Arquivo taurustlsrt.lpk não encontrado em: $TaurusRtPkg"
+ }
+
+ lazbuild "--primary-config-path=$env:USERPROFILE\AppData\Local\lazarus" "--add-package-link=$TaurusRtPkg"
+ lazbuild "--primary-config-path=$env:USERPROFILE\AppData\Local\lazarus" -B "$TaurusRtPkg"
+
+ - name: Build the Main package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/RESTDataWareComponents.lpk"
+
+ - name: Build Indy package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySockets.lpk"
+
+ - name: Build Taurus package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lpk"
+
+ - name: Build ShellServices package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/ShellTools/RESTDWShellServices.lpk"
+
+ - name: Build ZeosDriver package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/Drivers/zeos/RESTDWZeosDriver.lpk"
+
+ - name: Build LazarusDriver package on Windows
+ run: lazbuild -B "CORE/Packages/Lazarus/Drivers/lazdriver/RESTDWLazarusDriver.lpk"
diff --git a/CORE/Extras/TaurusTLS.zip b/CORE/Extras/TaurusTLS.zip
new file mode 100644
index 00000000..beab1785
Binary files /dev/null and b/CORE/Extras/TaurusTLS.zip differ
diff --git a/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcs.dproj b/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcs.dproj
index a490ccf4..be023321 100644
--- a/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcs.dproj
+++ b/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcs.dproj
@@ -2,13 +2,14 @@
{A67F6316-69EF-47DE-B9B2-6F96F4AF1CEB}
RESTDWSocketIcs.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
3
Package
+ RESTDWSocketIcs
true
@@ -48,6 +49,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -128,6 +134,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -188,7 +201,7 @@
RESTDWSocketIcs.dpk
-
+
@@ -217,16 +230,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -237,12 +240,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -295,6 +292,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -315,6 +322,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -325,6 +402,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -495,6 +582,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -672,6 +809,9 @@
1
+
+ 1
+
@@ -933,15 +1073,18 @@
+
False
False
False
False
+ False
False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcsDesign.dproj b/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcsDesign.dproj
index e9ce317e..d9e411de 100644
--- a/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcsDesign.dproj
+++ b/CORE/Packages/Delphi/Connectors/Ics/RESTDWSocketIcsDesign.dproj
@@ -2,13 +2,14 @@
{645810E3-443D-4DFA-AC30-B0C8146C08FE}
RESTDWSocketIcsDesign.dpk
- 19.5
+ 20.3
VCL
True
Debug
- Win32
+ Win64
3
Package
+ RESTDWSocketIcsDesign
true
@@ -33,6 +34,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -99,6 +105,13 @@
rtl;RESTDWSocketIndy;RESTDWSocketIcs;$(DCC_UsePackage)
Debug
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -154,7 +167,7 @@
RESTDWSocketIcsDesign.dpk
-
+
@@ -169,16 +182,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -189,12 +192,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -247,6 +244,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -267,6 +274,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -277,6 +354,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -447,6 +534,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -624,6 +761,9 @@
1
+
+ 1
+
@@ -885,12 +1025,14 @@
+
False
False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dpk b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dpk
index 102993db..832192e5 100644
--- a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dpk
+++ b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dpk
@@ -33,7 +33,8 @@ requires
RESTDWCore,
IndySystem,
IndyCore,
- IndyProtocols;
+ IndyProtocols,
+ TaurusTLS_RT;
contains
uRESTDWIdBase in '..\..\..\..\Source\Sockets\Indy\uRESTDWIdBase.pas';
diff --git a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dproj b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dproj
index 18dc2bfa..9ef5320d 100644
--- a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dproj
+++ b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.dproj
@@ -2,13 +2,14 @@
{8B3C90C4-F0A2-4045-BF82-210E62FA85E0}
RESTDWSocketIndy.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
33811
Package
+ RESTDWSocketIndy
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -93,11 +99,11 @@
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -136,6 +142,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -175,6 +188,7 @@
+
Base
@@ -200,7 +214,7 @@
RESTDWSocketIndy.dpk
-
+
@@ -221,7 +235,8 @@
-
+
+
RESTDWSocketIndy.bpl
true
@@ -235,16 +250,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -255,12 +260,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -313,6 +312,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -333,6 +342,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -343,6 +422,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -513,6 +602,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -690,6 +829,9 @@
1
+
+ 1
+
@@ -951,16 +1093,19 @@
+
True
True
True
False
+ False
False
False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.dproj b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.dproj
index d49f3429..9393c7e6 100644
--- a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.dproj
+++ b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.dproj
@@ -2,13 +2,14 @@
{FD20C3A3-AC3B-448C-89FA-744644EB144E}
RESTDWSocketIndyDesign.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
558099
Package
+ RESTDWSocketIndyDesign
true
@@ -43,6 +44,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -76,12 +82,12 @@
..\..\..\..\compiled
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -113,6 +119,13 @@
rtl;RESTDWSocketIndy;$(DCC_UsePackage)
Debug
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -168,7 +181,7 @@
RESTDWSocketIndyDesign.dpk
-
+
@@ -196,16 +209,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -216,12 +219,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -274,6 +271,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -294,6 +301,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -304,6 +381,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -474,6 +561,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -651,6 +788,9 @@
1
+
+ 1
+
@@ -912,14 +1052,17 @@
+
True
True
True
True
+ False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/AnyDAC/RESTDWAnyDACDriver.dproj b/CORE/Packages/Delphi/Drivers/AnyDAC/RESTDWAnyDACDriver.dproj
index 5db129f9..a8417ffe 100644
--- a/CORE/Packages/Delphi/Drivers/AnyDAC/RESTDWAnyDACDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/AnyDAC/RESTDWAnyDACDriver.dproj
@@ -2,13 +2,14 @@
{5B6D7BDD-2939-4069-8FA3-FE2F16712918}
RESTDWAnyDACDriver.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
693267
Package
+ RESTDWAnyDACDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -86,13 +92,13 @@
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
@@ -110,11 +116,11 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -131,6 +137,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -189,7 +202,7 @@
(untitled)
-
+
true
@@ -205,12 +218,7 @@
true
-
-
- RESTDWAnyDACDriver.bpl
- true
-
-
+
1
@@ -219,16 +227,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -239,12 +237,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -297,6 +289,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -317,6 +319,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -327,6 +399,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -497,6 +579,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -674,6 +806,9 @@
1
+
+ 1
+
@@ -934,16 +1069,19 @@
+
True
True
True
True
+ False
True
True
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/ApolloDB/RESTDWApolloDBDriver.dproj b/CORE/Packages/Delphi/Drivers/ApolloDB/RESTDWApolloDBDriver.dproj
index 054ea4c6..885e6fab 100644
--- a/CORE/Packages/Delphi/Drivers/ApolloDB/RESTDWApolloDBDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/ApolloDB/RESTDWApolloDBDriver.dproj
@@ -2,13 +2,14 @@
{7514457C-7190-4D6E-A65D-950C052F0397}
RESTDWApolloDBDriver.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
693267
Package
+ RESTDWApolloDBDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -86,13 +92,13 @@
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
@@ -110,11 +116,11 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -131,6 +137,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -189,7 +202,7 @@
(untitled)
-
+
true
@@ -205,12 +218,7 @@
true
-
-
- RESTDWApolloDBDriver.bpl
- true
-
-
+
1
@@ -219,16 +227,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -239,12 +237,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -297,6 +289,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -317,6 +319,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -327,6 +399,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -497,6 +579,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -674,6 +806,9 @@
1
+
+ 1
+
@@ -934,16 +1069,19 @@
+
True
True
True
True
+ False
True
True
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/FireDAC/RESTDWFireDACDriver.dproj b/CORE/Packages/Delphi/Drivers/FireDAC/RESTDWFireDACDriver.dproj
index 77cc9b2a..22a34a81 100644
--- a/CORE/Packages/Delphi/Drivers/FireDAC/RESTDWFireDACDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/FireDAC/RESTDWFireDACDriver.dproj
@@ -2,13 +2,14 @@
{51492283-F4E3-4B42-AF62-715E4F0BADAF}
RESTDWFireDACDriver.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
3
Package
+ RESTDWFireDACDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -130,6 +136,13 @@
Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -189,7 +202,7 @@
Microsoft Office XP Sample Automation Server Wrapper Components
-
+
@@ -218,16 +231,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -238,12 +241,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -296,6 +293,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -316,6 +323,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -326,6 +403,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -496,6 +583,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -673,6 +810,9 @@
1
+
+ 1
+
@@ -934,16 +1074,19 @@
+
False
False
False
False
+ False
False
False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/IbDAC/RESTDWIBDACDriver.dproj b/CORE/Packages/Delphi/Drivers/IbDAC/RESTDWIBDACDriver.dproj
index 77ee0128..66c83586 100644
--- a/CORE/Packages/Delphi/Drivers/IbDAC/RESTDWIBDACDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/IbDAC/RESTDWIBDACDriver.dproj
@@ -2,13 +2,14 @@
{BB3A9615-7326-47EE-94D6-DF450652CC5D}
RESTDWIbDACDriver.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
693267
Package
+ RESTDWIbDACDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -89,11 +95,11 @@
None
android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar
$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
RESTDWCore;RESTDWSocketIndy;dac280;ibdac280;$(DCC_UsePackage)
@@ -114,12 +120,12 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
dac280;ibdac280;$(DCC_UsePackage)
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -138,6 +144,13 @@
Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -197,7 +210,7 @@
Microsoft Office XP Sample Automation Server Wrapper Components
-
+
@@ -217,12 +230,7 @@
-
-
- RESTDWIbDACDriver.bpl
- true
-
-
+
1
@@ -231,16 +239,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -251,12 +249,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -309,6 +301,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -329,6 +331,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -339,6 +411,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -509,6 +591,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -686,6 +818,9 @@
1
+
+ 1
+
@@ -947,16 +1082,19 @@
+
True
True
True
True
+ False
True
True
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/InterBase/RESTDWInterbaseDriver.dproj b/CORE/Packages/Delphi/Drivers/InterBase/RESTDWInterbaseDriver.dproj
index 16d201be..bc0ccad1 100644
--- a/CORE/Packages/Delphi/Drivers/InterBase/RESTDWInterbaseDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/InterBase/RESTDWInterbaseDriver.dproj
@@ -2,13 +2,14 @@
{403054FA-84FF-41B9-928A-FF1D0B3B590A}
RESTDWInterbaseDriver.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
693267
Package
+ RESTDWInterbaseDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -86,13 +92,13 @@
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
@@ -110,11 +116,11 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -131,6 +137,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -189,7 +202,7 @@
RESTDWInterbaseDriver.dpk
-
+
true
@@ -205,12 +218,7 @@
true
-
-
- RESTDWInterbaseDriver.bpl
- true
-
-
+
1
@@ -219,16 +227,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -239,12 +237,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -297,6 +289,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -317,6 +319,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -327,6 +399,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -497,6 +579,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -674,6 +806,9 @@
1
+
+ 1
+
@@ -934,16 +1069,19 @@
+
True
True
True
True
+ False
True
True
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Drivers/MyDAC/RESTDWMyDACDriver.dproj b/CORE/Packages/Delphi/Drivers/MyDAC/RESTDWMyDACDriver.dproj
index 0e8bafa2..1165b9b8 100644
--- a/CORE/Packages/Delphi/Drivers/MyDAC/RESTDWMyDACDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/MyDAC/RESTDWMyDACDriver.dproj
@@ -7,8 +7,9 @@
693267
Package
None
- 19.5
- Win32
+ 20.3
+ Win64
+ RESTDWMyDACDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -111,12 +117,12 @@
$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -134,11 +140,11 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -157,6 +163,13 @@
Debug
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
0
0
@@ -226,12 +239,14 @@
True
True
True
+ False
True
True
True
True
+ False
-
+
@@ -251,12 +266,7 @@
-
-
- RESTDWMyDACDriver.bpl
- true
-
-
+
@@ -266,16 +276,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -286,12 +286,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -344,6 +338,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -364,6 +368,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -374,6 +448,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -544,6 +628,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -721,6 +855,9 @@
1
+
+ 1
+
@@ -983,6 +1120,7 @@
+
12
diff --git a/CORE/Packages/Delphi/Drivers/UniDAC/RESTDWUniDACDriver.dproj b/CORE/Packages/Delphi/Drivers/UniDAC/RESTDWUniDACDriver.dproj
index 3fa9b35b..350f8715 100644
--- a/CORE/Packages/Delphi/Drivers/UniDAC/RESTDWUniDACDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/UniDAC/RESTDWUniDACDriver.dproj
@@ -7,8 +7,9 @@
693267
Package
None
- 19.5
- Win32
+ 20.3
+ Win64
+ RESTDWUniDACDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -111,12 +117,12 @@
$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -134,11 +140,11 @@
true
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
@@ -157,6 +163,13 @@
Debug
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
0
0
@@ -226,12 +239,14 @@
True
True
True
+ False
True
True
True
True
+ False
-
+
@@ -251,12 +266,7 @@
-
-
- RESTDWUniDACDriver.bpl
- true
-
-
+
@@ -266,16 +276,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -286,12 +286,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -344,6 +338,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -364,6 +368,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -374,6 +448,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -544,6 +628,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -721,6 +855,9 @@
1
+
+ 1
+
@@ -983,6 +1120,7 @@
+
12
diff --git a/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.dproj b/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.dproj
index e5fe0bc3..c7451a4e 100644
--- a/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.dproj
+++ b/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.dproj
@@ -7,8 +7,9 @@
3
Package
None
- 19.5
+ 20.3
Win32
+ RESTDWZEOSDriver
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -161,6 +167,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
RELEASE;$(DCC_Define)
0
@@ -266,12 +279,14 @@
False
False
False
+ False
False
False
True
True
+ False
-
+
@@ -301,16 +316,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -321,12 +326,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -379,6 +378,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -399,6 +408,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -409,6 +488,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -579,6 +668,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -756,6 +895,9 @@
1
+
+ 1
+
@@ -1017,6 +1159,7 @@
+
12
diff --git a/CORE/Packages/Delphi/RESTDWCore.dpk b/CORE/Packages/Delphi/RESTDWCore.dpk
index 6c795f19..e628f9be 100644
--- a/CORE/Packages/Delphi/RESTDWCore.dpk
+++ b/CORE/Packages/Delphi/RESTDWCore.dpk
@@ -32,7 +32,10 @@ package RESTDWCore;
requires
rtl,
soaprtl,
- dbrtl;
+ dbrtl,
+ FireDAC,
+ FireDACCommonDriver,
+ FireDACCommon;
contains
uRESTDWBasic in '..\..\Source\Basic\uRESTDWBasic.pas',
@@ -95,7 +98,9 @@ contains
uRESTDWURLFunctions in '..\..\Source\utils\uRESTDWURLFunctions.pas',
uRESTDWPropertyPersist in '..\..\Source\Basic\uRESTDWPropertyPersist.pas',
uRESTDWStorageBin in '..\..\Source\Basic\uRESTDWStorageBin.pas',
- uRESTDWMemoryDataset in '..\..\Source\Plugins\Memdataset\uRESTDWMemoryDataset.pas',
+ {$IFDEF RESTDWMEMTABLE}
+ uRESTDWMemoryDataset in '..\..\Source\Plugins\Memdataset\uRESTDWMemoryDataset.pas',
+ {$ENDIF}
uRESTDWProtoTypes in '..\..\Source\Basic\uRESTDWProtoTypes.pas',
uRESTDWExprParser in '..\..\Source\Plugins\Memdataset\uRESTDWExprParser.pas',
uRESTDWDriverBase in '..\..\Source\Database_Drivers\uRESTDWDriverBase.pas',
diff --git a/CORE/Packages/Delphi/RESTDWCore.dproj b/CORE/Packages/Delphi/RESTDWCore.dproj
index 0d6eae7d..5a06fc23 100644
--- a/CORE/Packages/Delphi/RESTDWCore.dproj
+++ b/CORE/Packages/Delphi/RESTDWCore.dproj
@@ -7,7 +7,7 @@
33811
Package
None
- 20.1
+ 20.3
Win32
RESTDWCore
@@ -130,12 +130,12 @@
..\..\compiled
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -218,12 +218,12 @@
..\..\compiled
true
- CompanyName=XyberPower Desenvolvimento;FileDescription=$(MSBuildProjectName);FileVersion=2.1.0.116;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+ CompanyName=XyberPower Desenvolvimento;FileDescription=$(MSBuildProjectName);FileVersion=2.1.0.144;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
1033
2
1
REST Dataware - Core
- 116
+ 144
true
true
@@ -236,6 +236,12 @@
MainSource
+
+
+
+
+
+
@@ -299,7 +305,6 @@
-
@@ -343,7 +348,7 @@
True
False
-
+
@@ -363,6 +368,7 @@
+
RESTDWCore.bpl
@@ -377,16 +383,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -397,12 +393,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -495,6 +485,16 @@
1
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
res\drawable-anydpi-v26
diff --git a/CORE/Packages/Delphi/RESTDWCoreDesign.dproj b/CORE/Packages/Delphi/RESTDWCoreDesign.dproj
index 7f4dc973..52b7191b 100644
--- a/CORE/Packages/Delphi/RESTDWCoreDesign.dproj
+++ b/CORE/Packages/Delphi/RESTDWCoreDesign.dproj
@@ -2,13 +2,14 @@
{B229AD56-6CAC-4419-8C33-A144BCAD1177}
RESTDWCoreDesign.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
558099
Package
+ RESTDWCoreDesign
true
@@ -43,6 +44,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -76,12 +82,12 @@
false
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
activity-1.1.0.dex.jar;annotation-1.2.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;biometric-1.1.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.1.0.dex.jar;core-runtime-2.1.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.2.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.2.0.dex.jar;lifecycle-runtime-2.2.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.2.0.dex.jar;lifecycle-viewmodel-savedstate-2.2.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;savedstate-1.0.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -113,6 +119,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
Debug
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -172,7 +185,7 @@
Microsoft Office XP Sample Automation Server Wrapper Components
-
+
@@ -200,16 +213,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -220,12 +223,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -278,6 +275,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -298,6 +305,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -308,6 +385,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -478,6 +565,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -655,6 +792,9 @@
1
+
+ 1
+
@@ -916,14 +1056,17 @@
+
True
True
True
True
+ False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/ShellTools/RESTDWShellServices.dproj b/CORE/Packages/Delphi/ShellTools/RESTDWShellServices.dproj
index 547473d3..0325466c 100644
--- a/CORE/Packages/Delphi/ShellTools/RESTDWShellServices.dproj
+++ b/CORE/Packages/Delphi/ShellTools/RESTDWShellServices.dproj
@@ -2,13 +2,14 @@
{EADFFC95-BEC1-4CAE-AAFE-AEEE50783690}
RESTDWShellServices.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
558099
Package
+ RESTDWShellServices
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -92,7 +98,7 @@
false
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
None
Debug
android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar
@@ -100,7 +106,7 @@
$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
@@ -146,6 +152,13 @@
Debug
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -211,7 +224,7 @@
File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\RESTDWZEOSDriver.bpl not found
-
+
@@ -229,12 +242,7 @@
true
-
-
- RESTDWShellServices.bpl
- true
-
-
+
@@ -244,16 +252,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -264,12 +262,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -322,6 +314,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -342,6 +344,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -352,6 +424,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -522,6 +604,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -699,6 +831,9 @@
1
+
+ 1
+
@@ -960,16 +1095,19 @@
+
True
True
True
True
+ False
False
False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.dproj b/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.dproj
index 947231d8..293f9f1e 100644
--- a/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.dproj
+++ b/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.dproj
@@ -2,13 +2,14 @@
{C0D36021-A16C-44B0-8921-7852ADD1D0F2}
RESTDWShellServicesDesign.dpk
- 19.5
+ 20.3
None
True
Debug
Win32
3
Package
+ RESTDWShellServicesDesign
true
@@ -43,6 +44,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -113,6 +119,13 @@
Debug
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -168,7 +181,7 @@
(untitled)
-
+
@@ -196,16 +209,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -216,12 +219,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -274,6 +271,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -294,6 +301,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -304,6 +381,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -474,6 +561,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -651,6 +788,9 @@
1
+
+ 1
+
@@ -912,14 +1052,17 @@
+
False
False
False
False
+ False
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Tools/RESTDWSelfSigned.dproj b/CORE/Packages/Delphi/Tools/RESTDWSelfSigned.dproj
index 0a1cf81d..bac2a43d 100644
--- a/CORE/Packages/Delphi/Tools/RESTDWSelfSigned.dproj
+++ b/CORE/Packages/Delphi/Tools/RESTDWSelfSigned.dproj
@@ -2,13 +2,14 @@
{2E043D86-B418-4A04-8BD2-D8C8E05DB577}
RESTDWSelfSigned.dpk
- 19.5
+ 20.3
None
True
Debug
- Win32
+ Win64
693267
Package
+ RESTDWSelfSigned
true
@@ -53,6 +54,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -87,14 +93,14 @@
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
rtl;soaprtl;dbrtl;FireDAC;FireDACCommonDriver;FireDACCommon;RESTDWCore;$(DCC_UsePackage)
None
annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar
- package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35
Debug
rtl;soaprtl;dbrtl;FireDAC;FireDACCommonDriver;FireDACCommon;RESTDWCore;$(DCC_UsePackage)
@@ -135,12 +141,12 @@
$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
rtl;soaprtl;dbrtl;FireDAC;FireDACCommonDriver;FireDACCommon;$(DCC_UsePackage)
- CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
Debug
rtl;soaprtl;dbrtl;FireDAC;FireDACCommonDriver;FireDACCommon;$(DCC_UsePackage);$(DCC_UsePackage)
@@ -160,6 +166,13 @@
1033
vcl;rtl;soaprtl;dbrtl;FireDAC;FireDACCommonDriver;FireDACCommon;RESTDWCore;$(DCC_UsePackage)
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
DEBUG;$(DCC_Define)
true
@@ -218,7 +231,7 @@
RESTDWSelfSigned.dpk
-
+
true
@@ -243,16 +256,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -263,12 +266,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -321,6 +318,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -341,6 +348,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -351,6 +428,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -521,6 +608,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -698,6 +835,9 @@
1
+
+ 1
+
@@ -959,16 +1099,19 @@
+
True
True
True
True
+ False
True
True
True
True
+ False
12
diff --git a/CORE/Packages/Delphi/Wizards/RESTDWWizards.dproj b/CORE/Packages/Delphi/Wizards/RESTDWWizards.dproj
index 78786239..cf923e31 100644
--- a/CORE/Packages/Delphi/Wizards/RESTDWWizards.dproj
+++ b/CORE/Packages/Delphi/Wizards/RESTDWWizards.dproj
@@ -7,8 +7,9 @@
3
Package
VCL
- 19.5
- Win32
+ 20.3
+ Win64
+ RESTDWWizards
true
@@ -33,6 +34,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -99,6 +105,13 @@
CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
1033
+
+ Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
RELEASE;$(DCC_Define)
0
@@ -168,8 +181,9 @@
False
True
True
+ False
-
+
@@ -180,16 +194,6 @@
0
-
-
- classes
- 64
-
-
- classes
- 64
-
-
res\xml
@@ -200,12 +204,6 @@
1
-
-
- library\lib\armeabi-v7a
- 1
-
-
library\lib\armeabi
@@ -258,6 +256,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -278,6 +286,76 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\values-v35
+ 1
+
+
+ res\values-v35
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -288,6 +366,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -458,6 +546,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -635,6 +773,9 @@
1
+
+ 1
+
@@ -896,6 +1037,7 @@
+
12
diff --git a/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lpk b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lpk
new file mode 100644
index 00000000..7db3c364
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lpk
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lrs b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lrs
new file mode 100644
index 00000000..f071cb33
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.lrs
@@ -0,0 +1,182 @@
+LazarusResources.Add('TRESTDWIdServicePooler','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#204'IDATx'#1#189'VMHTQ'#20
+ +#254#222'0'#153#154#250'n '#25'Y'#206#179#133#26#21'>'#138'j'#163'`Q'#225#170
+ +#153'h'#27#164#237'Z'#244#179'h'#225'&'#180#132'('#8'l j'#151'B'#181#8'$'#199
+ +'E'#139'&'#162#25'h'#209#191'3'#17#20#20#211#188')'#195'`'#176#231#20#218'l'
+ +#154#206'yw|:'#163#163'oR'#230#131'3'#247#205#229#220#251#189'{~'#190'w'#149
+ +#167#183'{2Z}-"'#31#19'0'#127'M'#195')'#244#230#6#136#154#202'%}'#226#227'I'
+ +#236'?yEq3A'#240'N'#16#213'w'#131#216#10#231'x'#179#169#22#187#253'g'#160#183
+ +'4'#20'v'#202#200#193#205''''#168''''#130'm('#14#155#191'''q'#255'V'#0':'#17
+ +'-'#7#151#153#154'F5'#254#15'U'#14#195#235'B'#9'P'#18#18'7'#255#188'='#8#196
+ +'*P4&'#203#156#249'Y$'#190'f@S'#229'D'#200#0'F'#127#235#240#252#141'#'#146#18
+ +#16#170#192#148'i'#162#181#14'0'#21#129's["'#16'k'#165#239#208#132'3'#146#5
+ +#225#138'O'#1#170#238'E '#213#10'C'#209' '#132#10#179'BCt]'#7'0c'#218#4#197
+ +'`'#209#156#24#134#1'e"J'#4#130#8#26'!'#202#137'xr'#12#29'j|'#169#189#172#230
+ +#235#163#178#206#135#21#174#225'W'#176#223#208'L'#3#245#137'!l'#167#240#153
+ +'1Z'#16#3'v'#168'r'#254'5'#133#231#179'1'#183#248'kM'#238'f'#220#216#10'5 '
+ +#19#245#157#242#229#146#236'}I'#205#133#226#241'p'#143#28#135#2#207#236'9'#15
+ +')'#129#255'^'#208'z'#238':'#210'f'#141'+.'#225'Bz'#167#204'{vc'#133#16#213
+ +#149#232#242#181#217#255#251'n'#6#224';'#176#11#189#20'.'#206#209#170#144#204
+ +#7#235#224'zR'#230#179#199#15#231#204'[$'#143#201#242'r'#8'v'#155#213'4?'#217
+ +#19'*'#140'5'#2'V'#165#165#169#0#142'R!'#148#231#173'aE^L'#149'-'#146'Cd)'
+ +#178#27'T'#178'i]'#199'L('#132'}Y'#146'~2'#173#29'x'#223#158#187#240':'#21
+ +#203#3#234#169#211'X'#30'v'#226#175'j'#26':{{'#161#170'*zFFp'#153#8#25#31#200
+ +'<'#234#194#133'z'#29#28#195#206#137'+'#187#233'X8'#140'0Y3I'#201',B'#9'*'
+ +#211'w2T'#220'O'#172#10#250'F8'#134'MR'#22#137#192'O'#27'_'#28#24'@'#132#158
+ +#159#251#253#182'S'#244#7'pb'#167'$a'#152#127#128'07'#165'p'#196'!'#195#245
+ +#141',I'#185'`'#25#185#208#221'-'#217'='#30#219'I'#223' G>'#1#27'C-'#135'c'
+ +#184#248'2'#192#141'S'#23#143#195#235#245#162#127'p'#16'&'#157#168#201#144
+ +#250#193#201#247#208#27#143'~'#162#18#165#19#133#19#210#138#201#137#242#229
+ +#209#181#12'_$'#170#232';'#255#130'&'#216#184#178#142'e'#29#198'!+'#172#169
+ +'inc'#254#28'D'#127'Vbl'#248#18'4'#146#145'B'#224'fl'#236'<'#175'(9W'#162'T'
+ +#17'W'#162#22#231'W"'#148#2#255#0'V'#23#226'?'#241'j'#13'8'#0#0#0#0'IEND'#174
+ +'B`'#130
+]);
+LazarusResources.Add('TRESTDWIdClientPooler','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#193'IDATx'#1#189'VMh'#19'A'
+ +#20#254'R'#11'J'#209't#-j+'#217#245'`'#9'"'#24'E'#241'RH'#170#24#4#193'D'#170
+ +#183#138'I'#233'E/'#241'"'#136'?'#208'b'#145#208#147'E'#240#20#172#7#241'"'
+ +#162#5#11'R'#15'I'#164#168#20'+'#235'E#BY'#139'E*j&'#17#27'=h|ow'#147'tm'#218
+ +#236'B'#232#7#143#204#206#188'y'#223#204#251#203#184'R'#183'/'#150#148#206'6'
+ +#172#6'QX'#132#250'~'#14'v!mj'#129#223#231#133'6'#255#21'='#253#9'W3'#19'('
+ +#29'+'#147#176#226#195#254#4#14#255'X'#132']'#20'H&'#251'B'#8#145'0'#154#235
+ +'m'#152#24#185#135'3'#14#8'*Dw'''#161#30#240#233#227#166'z'#202#127#11#206#9
+ +#24#219'a'#184#217#22'I#'#176'&$uc'#242#205#11'<'#219#6#199#16#191'('#203#236
+ +#146'('#164#25#221'Z'#253'>?%'#193#229'Q'#224'w'#11#164'>'#2#30#143#4#145#19
+ +#8#200#180'X'#20#136'v'#9']O'#203#3'is'#143'cw'#9#207#30#18'?'#210#235#130
+ +#208'\2'#196'g'#13'9'#154'K7'#5#16#220'"j'#238#177#144#12#222'z'#164#215#197
+ +#170'$B@{'#167'Bn5''v'#4#160'|'#207'@'#202#169'PZk'#239#177#184'+'#26#233'F'
+ +#236'J'#18'c'#215#6'P'#238#2#179#11'@'#242'CUgw'#254#141#254#187#241#133#138
+ +'n'#246'{'#145'd='#185'G'#19'H'#230#150#28#134#214#218#142#155'$jv'#14#233
+ +#233'le1'#176#223#199#173#0#212'nt'#162'v"9'#244#10#142#241#137#15'h'#146'4'
+ +#137'Z'#213#236'2'#165'Ah'#14'R'#233#151'{'#23#199'#v5i'#220#162#163#13#141
+ +#130'%'#240'w'#198#167'06<'#208'P'#2#134'%'#240#131#231'"'#203#20#230'I'#30
+ +#252'7'#199'}'#233#160'9~K2LR'#164'z'#218'L'#217#245#135#2#206'q'#236']'#137
+ +#164#22':I'#142#145'<%'#185')Ih'#247#251'QL'#167'1b'#174'_&'#195#227'}'#176
+ +#164'/'#23#226#137#251'@'#220#252#182'U'#140#156')O"'#17#156#140#199'!'#203
+ +'2'#18#169#20#174#19'!'#207#243#233'Q'#178#234'sJ/%'#173'{'#19#6#187'+'#28#14
+ +#227'q,'#134'('#141'c'#153#12'Y'#146'P'#16'F'#133#199'&'#136#167'd'#24#22#191
+ +#141#196#228'_G$|'#226#189'0\'#183#139'd'#159#166'U'#214#212'/@d'''#140#222
+ +'U'#158'[0'#164#12'['#238'b'#195#26#25#158'Q'#20'\'#160#177';'#26#197','#197
+ +#198#13#195'5'#178'dT8'#199'B'#239#190#27#172#251#235#222#228#167#187'E'#207
+ +#148#211#163#163#232#165#152'H'#228'&&'#12#168#170'N'#194'.*'#27#207#155'.'
+ +#10'z'#29#198#228#232#217#8'f'#232#165'r'#137#10#245#229#208#16#158#211#220
+ +#17'TSX'#161'G'#204'k"'#233#233'2n'#192'd7'#166#169#15#158#10'!h'#254#199#187
+ +'l?'#137#178#14#158'Dn'#235#147#8'k'#129#127#31#30#236#221'K'#143'q'#211#0#0
+ +#0#0'IEND'#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWIdClientREST','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#25#8#6#0#0#0'++'#238']'#0
+ +#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28#233
+ +#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#3#11'IDATx'#1#189'V]HSa'#24'~fZ'
+ +#224#223#14'"'#253'h'#186'#&'#216#213#142#17'H'#16#236#16'T'#8'A'#147#238#186
+ +#217'L'#232'2'#20#202#188#202#22#221#20#193'Z7'#209#141#155'%'#221#165#219'M'
+ +#208'"'#243'DPi'#196#25#244'c^'#232#230#15'E'#12'Z3'#205','#178#247#253#182
+ +#169#251';'#132','#31'x'#207#247#247'~'#239#207's'#190#247'|'#199#244#180#191
+ +'wU'#174#173'F!1:>'#1'}b'#6'rM5'#138#217'8w'#10#9#251#145#3#208#200'Ila'#9'E'
+ +'( 8j6'#218'}'#237'>'#220#23'O'#131#131'/F'#1#193#212#132#6'g'#132'q'#169#162
+ +#20#234#193#230#132#3#246#234#127#248#28'X^'#194'f'#16#251'E'#180#180#29#22
+ +'}ks='#194#243'Q('#212'2'#132#131#155'='#151'pY'#142#174'oXIl'#146'J'#214#13
+ +'0Rci;'#16'^'#4#228#178'u'''#190#235'A'#216'{'#174' '#243#192#20#143#142'M'
+ +#192'n'#142#166'M'#250'gIv'#158#132#218#212#128#216#19#31#2#203'2l6'#27'b'
+ +#177#152'0.'#207'j'#8#253#148#224'-'#211#215#246'8k'#136#133#177'7'#144#219
+ +#143#165#217'*JE'#148#9'I'#146#128'j'#11'"'#245'*'#204'f3'#148')?d'#211'7'
+ +#132'^h'#208'w'#217#208''''#233#217'T'#197#179')6>E'#17#29'J'#147#156#216#220
+ +#168#18'-'#171'pT'#132#209'PnJ'#163#199#8'9O'#145#186#155#30#147#3'"3'#165#10
+ +'0'#211';'#193'+'#13#206'r'#26#215#209'iy'#235#3#234#240#239#14#238#188#6#234
+ +'s'#208#244#131#228#211#28#176'@m'#156#199'_'#128#15#201#181#219's'#217#250
+ +';N'#228'q'#208'F/u/'#242#227'%''@r'#28#198#24'Y'#201#158'+h%'#231#130#200
+ +#224'1I'#165#129#210'{'#146'y'#146#7'0'#198#182'|'#14#142#194#152#162'Z$(:'#5
+ +'c'#140#228#152#219#26#138'z'#184'#'#203'b'#226#15'U'#235#30#146#143'Th'#162
+ +#216#8'\'#193''#7'g'#169#157'R'#148#181'1'#203'"'#25'ju:'#209#238'p'#160#145
+ +#214#14'uu'#161#132#156#241#218'U'#175'W'#180'&'#210#169#204#151'A*'#202#241
+ +#129#1'L'#135'B'#176'Z'#173'bn'#152#198#188#137'k'#192'b'#177' '#16#8'@'#167
+ +#232#185'o'#143'D'#16#164#190#170#170#168'#'#189'3'#164'3'#153'/'#3'6 SD'#23
+ +'('#26#23'E'#174'i'#154'X'#236#238#235'C''I'#21#173#185'\.('#20#189#155#214
+ +'[ZZ'#196#139'O'#129#247#207''''#219#188#25#132#137#195's'#29#29#184';<,'#178
+ +'a'#184#201#232'~j'#127#147'p'#164'C>'#31#134#168#239#161'@'#158#249#253'kF8'
+ +'Kv'#184#152#203#129'TY*>'#5#236#128#143#161#215#227#17#198'"D'#1'g'#192'`j'
+ +#216')'#143#249#197'zH'#231#22#18#245#193#148#177'q>'#230#209#28'?'#15#166
+ +#233'G7V='#247#130'x7'#24#20#245#16'OnD'#6#5'B9'#217#178'^+'#9'gC_'#25#240#13
+ +#240#153#140';'#250'{'#211'~ '#248'f3'#165'~['#196#133#29#223#220#149#201','
+ +#164#174#200#141'`'#7#255#29#127#1#167#17#27'o'#244'4'#24'n'#0#0#0#0'IEND'
+ +#174'B`'#130
+]);
+LazarusResources.Add('TRESTDWIdDataBase','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#251'IDATx'#1#205'V]H'#20'Q'
+ +#20#254'F'#23'S'#201#221'AV'#250#177#220'1I'#196#151']'#139#160'7'#215#133
+ +#196#183#157#8#223#132'U'#31#131'Z'#5#11#31#194#159#183#130'"'#223'z'#8#138
+ +'y'#174'H'#131#136'z'#168#17#162#31#31'dV'#162#31#162#156'-'#13'-a'#239#26
+ +#154'Y'#177#157'{g'#199#157'Uq'#183','#241#131#179'w'#239#157'{'#206'w'#207
+ +'wf'#206#140#244#232'ZoJ'#169#244#226#127#192#156#158'CS'#231'y'#201#197#9
+ +#148#189'^'#177'`'#140#141#131#205'/b'#179#144'+'#188#8#248#235'D\'#14#151
+ +#205#168'_'#232'C{'#229#230#9#4'f'#128#161#7'^'#168'gz3$'#195#247#30#163'k'
+ +#29#130#174'/'#1#196#23#128#200'n'#6#150'`'#208'fd'#132#213'0'#216#167'8'#140
+ +''':'#2#181#10#148'9'#3#134';'#128#1#143#1#185'('#227#171#150#145'2o>dH'#156
+ +#23#179#210#174#241'#'#185'('#193#240#249#144'|'#168'!'#229#245#1#11#12#202
+ +'G'#29#172'%'#2#144#159#137'F'#168'S#'#144#11#215#250#219#210#23' '#15#196
+ +#238'h'#240#132'"'#176#15#164'H'#12#210'b'#18#242'sM'#204#131#133#230#134#254
+ +#174#141'.'#154#241'8'#152#203#3#181#196#4#155#137#129'1'#6#179'D'#129'Q'#31
+ +'E`r'#4#248'A'#243#183'1'#145#209'_'#147#12#20#233#214#233#247#211#15#27#134
+ +'z'#128#198#137#152'8'#189#236#166#165#18#178'e=?'#18#182#12'\y'#138#156#248
+ +#154#30#203'ro'#21'1'#247#28'v'#144#236#164#133#208#187#220#142#207#200#246
+ +#165'-'#23#166#200#222#167#255#231'U'#248#205'bKH'#132'\'#243'd'#183#242#216
+ +#252#18#150'T'#238'<'#246#242#152'5N'#18#238#20#202#195#177#18#219#184'&'#127
+ +'$'#23'?'#29#151#204#179'j'#157#251'~'#147#129'r'#186#240'k'#9#168#152#5#234
+ +#177#142'\'#181'd''e'#25'2'#25#199'.'#211#196'Q'#26#181#244#26#223#243#147
+ +#214#206'!#'#23'''=E'#129'G'#218#168#213'8'#152#205'$p'#252#6#16'u'#146#216
+ +'8'#162#170#240'Q3'#228#237'#'#24#12#226'tG'#7':'#163'Q'#152#20#156#19'I'#146
+ +#132#233#161#161','#18'~z'#164#178'3'#147'wd'#147#174'i+'#186#174#163'gt'#20
+ +'Wc1'#132#194'a'#177'v['#211'P'#174'('#136'D"B'#218#213#232#184'K<)+0'#251#14
+ +'H'#176#198'5$'#206#154#188#226#155'('#155'j'#191'_'#204#187#251#251'E&qj'
+ +#152'/'#128#21'"^'#31#227'3'#189';'#14#2#141#190#140#191'1k'#153#141#149#187
+ +#235#132#131#132#183#143'C$'#23#207#138#227#242#224' .uw'#11')S'#233#189#220
+ +#142#165#165#241'Q'#25#217#146'U'#11'>'#202#197#200#130#200#164#160#172'TL'
+ +#18#137#4'T'#170#11'#'#2'^'#135'b'#146','#222#208' 2'#17'''4'#12'q3'#216#224
+ +'7'#3#151#200#14#158'LK'#20#172#202#174#137'4y'#255'bJ&'#146#179#173'}'#226
+ +']owX'#30#140#23#248#230#170#160#205#176#30'J'#27#215#201#198')`S'#173#149#1
+ +''''#211'&'#128#246#214'fD'#219#154'Q'#221#210'#I'#206'O"}'#236'5'#254#5'dw)'
+ +#2'uU+'#159'D'#216#10#252#6#183#165#6'R'#238'E'#243'='#0#0#0#0'IEND'#174'B`'
+ +#130
+]);
+LazarusResources.Add('TRESTDWIdPoolerList','PNG',[
+ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#25#0#0#0#25#8#6#0#0#0#196#233#133
+ +'c'#0#0#0#9'pHYs'#0#0#8'N'#0#0#8'N'#1#140'1'#0#236#0#0#0#1'sRGB'#0#174#206#28
+ +#233#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#2#163'IDATx'#1#237'V_hRQ'#24
+ +#255'y'#185'K'#216#186'Wq'#163' '#193#253'a'#180#145#140#182'A{*X'#27#27'='
+ +#244#208#234#181'|'#24#13#236#177#183#192#158'b'#15#190#5'-'#232'i'#213#6'='
+ +#173#127#176'7'#17'+('#137#2'Q'#164'fJr1M'#148'!W'#197'Hq'#179's'#142'z'#253
+ +#179#169#183#17'>'#245#131#239#28#191#239'|'#231#251#157#223#185#231'^'#143
+ +#230#205#227';'#165'!'#227#0'('#188#129#8#228#236'/'#168#197#236#185#241#182
+ +#227'Rl'#23#23#151#237#26#158#17#148#128#205'e;f'#127#238#194#0'u'#200#16'{x'
+ +'j'#0'w'#159#223#131'^'#232'=<'#169'T'#238'x'#218'x>'#7'p'#157#16#252'-'#206
+ +#144'9/_'#191#199#242#141#197#182'y'#28'mRG '#168'b_'#197#246'r'#232#2#186'B'
+ +#194#158'IF'#20#177'e'#183#227'('#224'S_:'#230'0%'#130' `ii'#9#225'p'#24#30
+ +#143#135'Y*'#149#2#207#243#240#249'|H$'#18#208#233't'#172'w'#185'\,/'#20#10
+ +#177'9"Y'#160'*'#146'*'#146#201'$'#180'Z-zzz`6'#155#225#247#251#209#223#223
+ +#15#147#201#132'\.'#135'B'#161#160#228#20#139'Ed'#179'Y'#168#1'_'#239'H'#146
+ +#132#149#149#21#184#221'n8'#157'N'#182'b'#131#193#128't:'#205#198'#'#145#8
+ +#235#189'^/'#244'z=2'#153#140'z'#18#186#162'Wkk'#184'0<'#140#236#206#14#6#249
+ +'2'#183'yj'#10#177'X'#12#2#199'!K'#10#234#9'!'#12#229#215'U '#219#228#220#216
+ +#128#225#228#190':'#18#145#20#152'{'#180#217'6'#241'+'#177#143'33'#16#141#198
+ +'r'#160#162'"&'#12#224#193#246#183#134'\'#14'{'#184'<}'#162#145#164#19'h'#185
+ +#31'6'#27','#22#139#18#179#17#191#175#175#15#218#130#6#31#188#223'Y'#204'j'
+ +#181#194'XY'#196#250#211'u\'#155'>^!U'#1#170'b|~'#190'!'#22#143#199#217'!'#8
+ +#6#131'p8'#28#152#152#152'P'#8'('#230#22'.'#177#15#174'j%'#20#209'h'#20#165
+ +'RI'#241'iAY'#150'1::'#138#145#145#17#228#243'y'#150'S'#5'}'#150'U'#148'_Fb/'
+ +#154#138#210#211#191'P'#231#239'mY'#192#233'j'#254#173'c'#164'!'#219'~{'#27
+ +#184'O'#19'%bOV'#149'q'#225'7 '#159#189'Y#'#161#5#231#208#30'Cb'#217#154#161
+ +#211#30#30#151#136'h'#185'^'#137#26'HT'#174#230'`<'#157#175#140'5A'#206#215
+ +'~'#171'&'#249#175'D!'#225'Z'#253'GW@k'#188#163'G~'#240#224'X+%'#18#249#220
+ +#233#197#222#26#201#213'+'#231#177#250#204#129'Yr'#187#16'['#144#228#130'd'
+ +#210'ibZtTB'#9'0'#182#136#201'1'#19#243'5'#245'W'#162#183#159#2#248#23#160#10
+ +'&'#199'M'#202#149#8#221#192#31#139#132#254#167#187#13'|'#234#0#0#0#0'IEND'
+ +#174'B`'#130
+]);
diff --git a/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.pas b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.pas
new file mode 100644
index 00000000..1a5a609c
--- /dev/null
+++ b/CORE/Packages/Lazarus/Connectors/Indy/RESTDWIndySocketsTaurus.pas
@@ -0,0 +1,22 @@
+{ This file was automatically created by Lazarus. Do not edit!
+ This source is only used to compile and install the package.
+ }
+
+unit RESTDWIndySocketsTaurus;
+
+{$warn 5023 off : no warning about unused units}
+interface
+
+uses
+ uRESTDWIdBase, uRESTDWIdReg, LazarusPackageIntf;
+
+implementation
+
+procedure Register;
+begin
+ RegisterUnit('uRESTDWIdReg', @uRESTDWIdReg.Register);
+end;
+
+initialization
+ RegisterPackage('RESTDWIndySocketsTaurus', @Register);
+end.
diff --git a/CORE/Source/Basic/uRESTDWBasic.pas b/CORE/Source/Basic/uRESTDWBasic.pas
index 83552ee0..b41b3e19 100644
--- a/CORE/Source/Basic/uRESTDWBasic.pas
+++ b/CORE/Source/Basic/uRESTDWBasic.pas
@@ -34,7 +34,7 @@ interface
{$IFDEF RESTDWFMX}System.IOUtils,{$ENDIF}
SysUtils, Classes, Db, Variants,
{$IFNDEF RESTDWLAZARUS}SyncObjs,{$ENDIF}
- uRESTDWComponentEvents, uRESTDWBasicTypes, uRESTDWProtoTypes, uRESTDWJSONObject,
+ uRESTDWComponentEvents, uRESTDWBasicTypes, uRESTDWBasicDbTypes, uRESTDWProtoTypes, uRESTDWJSONObject,
uRESTDWParams, uRESTDWMassiveBuffer, uRESTDWDataUtils,
uRESTDWTools, uRESTDWConsts, uRESTDWMessageCoderMIME,
uRESTDWZlib, uRESTDWMimeTypes, uRESTDWAbout, uRESTDWAuthenticators, uRESTDWBasicClass;
@@ -5574,7 +5574,7 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
If Not TRESTDWPoolerDB(ServerMethodsClass.Components[i]).RESTDriver.ConnectionSet Then
Raise Exception.Create(cInvalidDriverConnection);
TRESTDWPoolerDB(ServerMethodsClass.Components[i]).RESTDriver.PrepareConnection(ConnectionDefs);
- vTempJSON := TRESTDWPoolerDB(ServerMethodsClass.Components[i]).RESTDriver.ExecuteCommand(Params.ItemsString['SQL'].Value,
+ vTempJSON := TRESTDWPoolerDB(ServerMethodsClass.Components[i]).RESTDriver.ExecuteCommand(Params.ItemsString['SQL'].Value,
vError,
vMessageError,
BinaryBlob,
@@ -7244,6 +7244,7 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
vErrorMessage,
vStrAcceptedRoutes : String;
vDWRoutes : TRESTDWRoutes;
+ vEvent : TRESTDWEvent;
Begin
Result := False;
vRejected := False;
@@ -7288,40 +7289,41 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
Break;
End;
End;
- If (TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteIsActive(RequestType)) Or
- (TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteIsActive(rtAll)) Then
+ vEvent := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler];
+ If (vEvent.Routes.RouteIsActive(RequestType)) Or
+ (vEvent.Routes.RouteIsActive(rtAll)) Then
Begin
vResult := '';
TRESTDWServerEvents(ServerMethodsClass.Components[i]).CreateDWParams(Pooler, Params);
- IF TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteNeedAuthorization(RequestType) Or
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteNeedAuthorization(rtAll) Then
+ IF vEvent.Routes.RouteNeedAuthorization(RequestType) Or
+ vEvent.Routes.RouteNeedAuthorization(rtAll) Then
Begin
- If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnAuthRequest) Then
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnAuthRequest(Params, vRejected, vErrorMessage, ErrorCode, RequestHeader);
+ If Assigned(vEvent.OnAuthRequest) Then
+ vEvent.OnAuthRequest(Params, vRejected, vErrorMessage, ErrorCode, RequestHeader);
End
Else
Vrejected := False;
If Not vRejected Then
Begin
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].CompareParams(Params);
+ vEvent.CompareParams(Params);
Try
If RequestType <> rtOption Then
Begin
vResultA := TStringList.Create;
Try
- If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnBeforeExecute) Then
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnBeforeExecute(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler]);
- If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEventByType) Then
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEventByType(Params, vResultA, RequestType, ErrorCode, RequestHeader)
- Else If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEvent) Then
- TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEvent(Params, vResultA);
+ If Assigned(vEvent.OnBeforeExecute) Then
+ vEvent.OnBeforeExecute(vEvent);
+ If Assigned(vEvent.OnReplyEventByType) Then
+ vEvent.OnReplyEventByType(Params, vResultA, RequestType, ErrorCode, RequestHeader)
+ Else If Assigned(vEvent.OnReplyEvent) Then
+ vEvent.OnReplyEvent(Params, vResultA);
Finally
vResult := vResultA.Text;
vResultA.Free;
End;
End;
- DataMode := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].DataMode;
- ContentType := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].defaultcontenttype;
+ DataMode := vEvent.DataMode;
+ ContentType := vEvent.defaultcontenttype;
If Trim(ContentType) = '' Then
ContentType := cDefaultContentType;
Except
@@ -7357,7 +7359,7 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
Else
Begin
vStrAcceptedRoutes := '';
- vDWRoutes := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes;
+ vDWRoutes := vEvent.Routes;
If vDWRoutes.RouteIsActive(rtGet) Then
Begin
If vStrAcceptedRoutes <> '' Then
diff --git a/CORE/Source/Basic/uRESTDWBasicDB.pas b/CORE/Source/Basic/uRESTDWBasicDB.pas
index adc041a8..e72b8efd 100644
--- a/CORE/Source/Basic/uRESTDWBasicDB.pas
+++ b/CORE/Source/Basic/uRESTDWBasicDB.pas
@@ -33,11 +33,33 @@ interface
{$IFDEF RESTDWLAZARUS}memds,{$ENDIF}
{$IFDEF RESTDWFMX}System.UITypes, {$ENDIF}
SysUtils, Classes, Db, SyncObjs, Variants,
- uRESTDWDataUtils, uRESTDWBasicTypes, uRESTDWProtoTypes,
- uRESTDWPoolermethod, uRESTDWComponentEvents, uRESTDWAbout, uRESTDWConsts,
+ uRESTDWDataUtils, uRESTDWProtoTypes,
+ uRESTDWPoolermethod, uRESTDWComponentEvents, uRESTDWAbout,
uRESTDWResponseTranslator, uRESTDWBasicClass, uRESTDWJSONObject, uRESTDWParams,
- uRESTDWBasic, uRESTDWMassiveBuffer, uRESTDWMasterDetailData,
- uRESTDWMemoryDataset, uRESTDWBufferBase, uRESTDWDriverBase, uRESTDWTools;
+ uRESTDWBasic, uRESTDWMassiveBuffer, uRESTDWBasicTypes, uRESTDWBasicDbTypes, uRESTDWMasterDetailData
+ {$IFDEF UNIDACMEM}
+ , DADump, UniDump, VirtualTable, MemDS,
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ , ZAbstractRODataset, ZAbstractDataset, ZMemTable, ZDataset,
+ {$ENDIF}
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 22} // Delphi 2010 pra cima
+ {$IFDEF RESTFDMEMTABLE}
+ , FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
+ FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
+ FireDAC.Comp.DataSet, FireDAC.Comp.Client,
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 26} // Delphi XE6 pra cima
+ FireDAC.Stan.StorageBin,
+ {$IFEND}
+ {$ENDIF}
+ {$ENDIF}
+ {$IFEND}
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ , uRESTDWMemoryDataset,
+ {$ENDIF} uRESTDWBufferBase, uRESTDWDriverBase, uRESTDWConsts, uRESTDWTools;
Type
TOnExecuteData = Procedure Of Object;
@@ -684,8 +706,30 @@ interface
vMasterDetailList : TMasterDetailList; //DataSet MasterDetail Function
vMassiveDataset : TMassiveDataset;
vLastOpen : Integer;
- Procedure CloneDefinitions (Source : TRESTDWMemtable;
- aSelf : TRESTDWMemtable); //Fields em Definições
+ Procedure CloneDefinitions (Source : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
+ aSelf : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}); //Fields em Definições
Procedure OnChangingSQL (Sender : TObject); //Quando Altera o SQL da Lista
Procedure OnBeforeChangingSQL(Sender : TObject);
Procedure SetActiveDB (Value : Boolean); //Seta o Estado do Dataset
@@ -5229,10 +5273,8 @@ procedure TRESTDWDatabasebaseBase.Loaded;
Function TRESTDWDatabasebaseBase.BuildConnection(aBinaryRequest : Boolean) : TRESTDWPoolerMethodClient;
Begin
Result := nil;
-
if Assigned(vOnBuildConnection) then
vOnBuildConnection(Self);
-
Result := TRESTDWPoolerMethodClient.Create(Nil);
Result.PoolerNotFoundMessage := PoolerNotFoundMessage;
Result.AuthenticationOptions.Assign(AuthenticationOptions);
@@ -8361,8 +8403,30 @@ procedure TRESTDWClientSQL.SetSQL(Value: TStringList);
vCreateDS := True;
SetInBlockEvents(True);
Try
- TRESTDWMemtable(Self).Close;
- TRESTDWMemtable(Self).Open;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Close;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Open;
vCreateDS := False;
vActive := Not vCreateDS;
Finally
@@ -8379,9 +8443,9 @@ procedure TRESTDWClientSQL.SetSQL(Value: TStringList);
vCreateDS := True;
SetInBlockEvents(True);
Try
-
- EmptyTable;
-
+ {$IFDEF RESTDWMEMTABLE}
+ EmptyTable;
+ {$ENDIF}
vCreateDS := False;
vActive := Not vCreateDS;
Finally
@@ -8391,8 +8455,30 @@ procedure TRESTDWClientSQL.SetSQL(Value: TStringList);
Class Procedure TRESTDWTable.CreateEmptyDataset(Const Dataset : TDataset);
Begin
Try
- TRESTDWMemtable(Dataset).Close;
- TRESTDWMemtable(Dataset).Open;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Close;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Open;
Finally
End;
End;
@@ -8400,8 +8486,30 @@ procedure TRESTDWClientSQL.SetSQL(Value: TStringList);
Class Procedure TRESTDWClientSQL.CreateEmptyDataset(Const Dataset : TDataset);
Begin
Try
- TRESTDWMemtable(Dataset).Close;
- TRESTDWMemtable(Dataset).Open;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Close;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.Open;
Finally
End;
End;
@@ -8441,13 +8549,35 @@ procedure TRESTDWClientSQL.SetSQL(Value: TStringList);
I : Integer;
FieldDef : TFieldDef;
Begin
- TRESTDWMemtable(Self).Close;
+ {$IFDEF UNIDACMEM}
+ TVirtualTable(Self).Close;
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self).Close;
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self).Close;
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self).Close;
+ {$ENDIF}
For I := 0 To Length(vFieldsList) -1 Do
Begin
FieldDef := FieldDefExist(Self, vFieldsList[I].FieldName);
If FieldDef = Nil Then
Begin
- FieldDef := TRESTDWMemtable(Self).FieldDefs.AddFieldDef;
+ FieldDef := {$IFDEF UNIDACMEM}
+ TVirtualTable(Self)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable(Self)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable(Self)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable(Self)
+ {$ENDIF}.FieldDefs.AddFieldDef;
FieldDef.Name := vFieldsList[I].FieldName;
FieldDef.DataType := vFieldsList[I].DataType;
FieldDef.Size := vFieldsList[I].Size;
@@ -8565,9 +8695,9 @@ procedure TRESTDWClientSQL.CloseCursor;
vActive := False;
If Not vActive Then
SetActiveDB(True);
+ If vActive Then
+ Inherited Open;
End;
- If vActive Then
- Inherited Open;
Finally
vInBlockEvents := False;
End;
@@ -9699,8 +9829,30 @@ constructor TRESTDWThreadRequest.Create(aSelf : TComponent;
// {$ENDIF}
End;
-Procedure TRESTDWClientSQL.CloneDefinitions(Source : TRESTDWMemtable;
- aSelf : TRESTDWMemtable); //Fields em Definições
+Procedure TRESTDWClientSQL.CloneDefinitions(Source : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
+ aSelf : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}); //Fields em Definições
Var
I, A : Integer;
Begin
@@ -9842,7 +9994,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew;
Begin
If Not FindField(vFieldA).IsNull Then
Begin
- {$IFDEF DELPHI10_2UP}
+ {$IFDEF DELPHI11UP}
Value.ParamByName(vFieldD).AsGUID := FindField(vFieldA).AsGUID;
{$ELSE}
Value.ParamByName(vFieldD).AsString := FindField(vFieldA).AsString;
@@ -9922,7 +10074,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew;
Begin
If Not FindField(vFieldA).IsNull Then
Begin
- {$IFDEF DELPHI10_2UP}
+ {$IFDEF DELPHI11UP}
Value.ParamByName(vFieldD).AsGUID := FindField(vFieldA).AsGUID;
{$ELSE}
Value.ParamByName(vFieldD).AsString := FindField(vFieldA).AsString;
@@ -10288,7 +10440,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew;
If DataSet = Nil Then
Begin
vRESTDataBase.ExecuteCommandTB(vActualPoolerMethodClient, vTablename, vParams, vError, vMessageError, LDataSetList,
- vRowsAffected, BinaryRequest, True, Fields.Count = 0, Nil);
+ vRowsAffected, BinaryRequest, BinaryCompatibleMode, Fields.Count = 0, Nil);
If LDataSetList <> Nil Then
Begin
If BinaryRequest Then
@@ -10588,7 +10740,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew;
For I := 0 To 1 Do
Begin
vRESTDataBase.ExecuteCommand(vActualPoolerMethodClient, vSQL, vParams, vError, vMessageError, LDataSetList,
- vRowsAffected, False, BinaryRequest, True, vMetaData, vRESTDataBase.RESTClientPooler);
+ vRowsAffected, False, BinaryRequest, BinaryCompatibleMode, vMetaData, vRESTDataBase.RESTClientPooler);
If Not(vError) or (vMessageError <> cInvalidAuth) Then
Break;
End;
diff --git a/CORE/Source/Basic/uRESTDWBasicDbTypes.pas b/CORE/Source/Basic/uRESTDWBasicDbTypes.pas
new file mode 100644
index 00000000..3c7fdb6b
--- /dev/null
+++ b/CORE/Source/Basic/uRESTDWBasicDbTypes.pas
@@ -0,0 +1,493 @@
+unit uRESTDWBasicDbTypes;
+
+{$I ..\..\Source\Includes\uRESTDW.inc}
+
+{
+ REST Dataware .
+ Criado por XyberX (Gilbero Rocha da Silva), o REST Dataware tem como objetivo o uso de REST/JSON
+ de maneira simples, em qualquer Compilador Pascal (Delphi, Lazarus e outros...).
+ O REST Dataware também tem por objetivo levar componentes compatíveis entre o Delphi e outros Compiladores
+ Pascal e com compatibilidade entre sistemas operacionais.
+ Desenvolvido para ser usado de Maneira RAD, o REST Dataware tem como objetivo principal você usuário que precisa
+ de produtividade e flexibilidade para produção de Serviços REST/JSON, simplificando o processo para você programador.
+
+ Membros do Grupo :
+
+ XyberX (Gilberto Rocha) - Admin - Criador e Administrador do pacote.
+ Alexandre Abbade - Admin - Administrador do desenvolvimento de DEMOS, coordenador do Grupo.
+ Anderson Fiori - Admin - Gerencia de Organização dos Projetos
+ Flávio Motta - Member Tester and DEMO Developer.
+ Mobius One - Devel, Tester and Admin.
+ Gustavo - Criptografia and Devel.
+ Eloy - Devel.
+ Roniery - Devel.
+}
+
+{$IFNDEF RESTDWLAZARUS}
+ {$IFDEF FPC}
+ {$MODE OBJFPC}{$H+}
+ {$ENDIF}
+{$ENDIF}
+
+Interface
+
+Uses
+ {$IFNDEF FPC}
+ {$IF CompilerVersion < 21}
+ DbTables,
+ {$IFEND}
+ {$ENDIF}
+ SysUtils, Classes, Db, FMTBcd,
+ uRESTDWAbout, uRESTDWProtoTypes, uRESTDWConsts, uRESTDWTools;
+
+ Type
+ TRESTDWMemTableAE = Class
+ End;
+ TFieldAttrs = Array of Byte;
+ TMemBlobData = TRESTDWBytes;
+ TMemBlobArray = Array Of TMemBlobData;
+ PMemBlobArray = ^TMemBlobArray;
+
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 21}
+ PRESTDWMTMemBuffer = PByte;
+ TRESTDWMTBookmark = TBookmark;
+ TRESTDWMTValueBuffer = TValueBuffer;
+ TRESTDWMTRecordBuffer = TRecordBuffer;
+ {$ELSE}
+ {$IFDEF UNICODE}
+ PRESTDWMTMemBuffer = PByte;
+ {$ELSE}
+ PRESTDWMTMemBuffer = PAnsiChar;
+ {$ENDIF UNICODE}
+ TRESTDWMTBookmark = Pointer;
+ TRESTDWMTValueBuffer = Pointer;
+ TRESTDWMTRecordBuffer = Pointer;
+ {$IFEND}
+ {$ELSE}
+ TValueBuffer = Array of Byte;
+ PRESTDWMTMemBuffer = PByte;
+ TRESTDWMTBookmark = Pointer;
+ TRESTDWMTValueBuffer = Pointer;
+ TRESTDWMTRecordBuffer = TRecordBuffer;
+ {$ENDIF}
+ PMemBlobData = ^TRESTDWBytes;
+ Type
+ PRESTDWMTMemoryRecord = ^TRESTDWMTMemoryRecord;
+ TRESTDWMTMemoryRecord = Class(TPersistent)
+ Private
+ FMemoryData : TRESTDWMemTableAE;
+ FIndex,
+ FID : Integer;
+ FData : Pointer;
+ FIsNull : Boolean;
+ Function GetIndex : Integer;
+ Procedure SetMemoryData(Value : TRESTDWMemTableAE;
+ UpdateParent : Boolean);
+ Protected
+ Procedure SetIndex (Value : Integer); Virtual;
+ Public
+ FBlobs : TMemBlobArray;
+ Constructor Create (MemoryData : TRESTDWMemTableAE); Virtual;
+ Constructor CreateEx (MemoryData : TRESTDWMemTableAE;
+ UpdateParent : Boolean); Virtual;
+ Destructor Destroy;Override;
+ Property MemoryData : TRESTDWMemTableAE Read FMemoryData;
+ Property ID : Integer Read FID Write FID;
+ Property Index : Integer Read GetIndex Write SetIndex;
+ Property Data : Pointer Read FData Write FData;
+ Property Blobs : TMemBlobArray Read FBlobs Write FBlobs;
+ Property IsNull : Boolean Read FIsNull Write FIsNull;
+ End;
+ Type
+ IRESTDWMemTable = Interface
+ Function GetRecordCount : Integer;
+ Function GetMemoryRecord (Index : Integer) : TRESTDWMTMemoryRecord;
+ Function GetOffSets (aField : TField) : Word;Overload;
+ Function GetOffSets (Index : Integer) : Word;Overload;
+ Function GetOffSetsBlobs : Word;
+ Function DataTypeSuported(datatype : TFieldType) : Boolean; // new
+ Function DataTypeIsBlobTypes(datatype : TFieldType) : Boolean; // new
+ Function GetBlobRec (Field : TField;
+ Rec : TRESTDWMTMemoryRecord) : TMemBlobData;
+ Function CreateBlobStream (Field : TField;
+ Mode : TBlobStreamMode) : TStream;
+ Function GetCalcFieldLen (FieldType: TFieldType;
+ Size : Word) : Word;
+ Procedure InternalAddRecord (Buffer : {$IFDEF FPC}Pointer{$ELSE}
+ {$IFDEF RESTDWANDROID}TRecBuf{$ELSE}
+ {$IF CompilerVersion >22}Pointer{$ELSE}TRecordBuffer{$IFEND}{$ENDIF}{$ENDIF};
+ aAppend : Boolean);
+ Procedure InitRecord (Buffer : {$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF});
+ Function AllocRecordBuffer : TRecordBuffer;
+ Procedure SetMemoryRecordData(Buffer : PRESTDWMTMemBuffer;
+ Pos : Integer);
+ Procedure AfterLoad;
+ Function GetDataset : TDataset;
+ Function GetBlob (RecNo, Index : Integer) : PMemBlobData;
+ Procedure Loaded;
+ {$IFDEF FPC}
+ Function GetDatabaseCharSet : TDatabaseCharSet;
+ {$ENDIF}
+ End;
+ Type
+ TConnectionDefs = Class(TPersistent)
+ Private
+ votherDetails,
+ vCharset,
+ vDatabaseName,
+ vHostName,
+ vUsername,
+ vPassword,
+ vProtocol,
+ vDriverID,
+ vDataSource : String;
+ vdbPort : Integer;
+ vDWDatabaseType : TRESTDWDatabaseType;
+ Private
+ Function GetDatabaseType(Value : String) : TRESTDWDatabaseType;Overload;
+ Function GetDatabaseType(Value : TRESTDWDatabaseType) : String; Overload;
+ Public
+ Constructor Create; //Cria o Componente
+ Destructor Destroy;Override;//Destroy a Classe
+ Procedure Assign(Source : TPersistent); Override;
+ Function ToJSON : String;
+ Procedure LoadFromJSON(Value : String);
+ Published
+ Property DriverType : TRESTDWDatabaseType Read vDWDatabaseType Write vDWDatabaseType;
+ Property Charset : String Read vCharset Write vCharset;
+ Property DriverID : String Read vDriverID Write vDriverID;
+ Property DatabaseName : String Read vDatabaseName Write vDatabaseName;
+ Property HostName : String Read vHostName Write vHostName;
+ Property Username : String Read vUsername Write vUsername;
+ Property Password : String Read vPassword Write vPassword;
+ Property Protocol : String Read vProtocol Write vProtocol;
+ Property DBPort : Integer Read vdbPort Write vdbPort;
+ Property DataSource : String Read vDataSource Write vDataSource;
+ Property OtherDetails : String Read votherDetails Write votherDetails;
+ End;
+ Type
+ TRESTDWStorageBase = class(TRESTDWComponent)
+ Private
+ {$IFDEF FPC}
+ FDatabaseCharSet: TDatabaseCharSet;
+ {$ENDIF}
+ FEncodeStrs: Boolean;
+ Protected
+ Procedure SaveDatasetToStream (Dataset : TDataset;
+ Var stream : TStream); Virtual;
+ Procedure LoadDatasetFromStream(Dataset : TDataset;
+ stream : TStream); Virtual;
+ Procedure SaveDWMemToStream (Dataset : TDataset;
+ Var stream : TStream); Virtual;
+ Procedure LoadDWMemFromStream (Dataset : TDataset;
+ stream : TStream); Virtual;
+ Public
+ Constructor Create (AOwner : TComponent); Override;
+ Procedure SaveToStream (Dataset : TDataset;
+ Var Stream : TStream);
+ Procedure LoadFromStream(Dataset : TDataset;
+ Stream : TStream);
+ Procedure SaveToFile (Dataset : TDataset;
+ FileName : String);
+ Procedure LoadFromFile (Dataset : TDataset;
+ FileName : String);
+ Public
+ Property EncodeStrs : Boolean Read FEncodeStrs Write FEncodeStrs;
+ Published
+ {$IFDEF FPC}
+ Property DatabaseCharSet : TDatabaseCharSet Read FDatabaseCharSet Write FDatabaseCharSet;
+ {$ENDIF}
+ End;
+
+
+
+implementation
+
+Uses uRESTDWMemoryDataset, uRESTDWDataJSON, uRESTDWJSONInterface;
+
+constructor TRESTDWStorageBase.Create(AOwner: TComponent);
+Begin
+ inherited Create(AOwner);
+ FEncodeStrs := True;
+End;
+
+Procedure TRESTDWStorageBase.LoadDatasetFromStream(Dataset: TDataset; stream: TStream);
+Begin
+
+End;
+
+Procedure TRESTDWStorageBase.LoadDWMemFromStream(Dataset : TDataset;
+ stream : TStream);
+Begin
+
+End;
+
+Procedure TRESTDWStorageBase.LoadFromFile(Dataset: TDataset; FileName: String);
+Var
+ vFileStream : TFileStream;
+Begin
+ If not FileExists(FileName) then
+ Exit;
+ vFileStream := TFileStream.Create(FileName,fmOpenRead or fmShareDenyWrite);
+ Try
+ LoadFromStream(Dataset,TStream(vFileStream));
+ Finally
+ vFileStream := Nil;
+ vFileStream.Free;
+ End;
+End;
+
+Procedure TRESTDWStorageBase.LoadFromStream(Dataset: TDataset; stream: TStream);
+Begin
+ LoadDWMemFromStream(TRESTDWMemtable(Dataset), stream);
+End;
+
+Procedure TRESTDWStorageBase.SaveDatasetToStream(Dataset: TDataset; Var stream: TStream);
+Begin
+
+End;
+
+Procedure TRESTDWStorageBase.SaveDWMemToStream(Dataset : TDataset;
+ Var Stream : TStream);
+Begin
+
+End;
+
+Procedure TRESTDWStorageBase.SaveToFile(Dataset: TDataset; FileName: String);
+Var
+ vFileStream : TFileStream;
+Begin
+ Try
+ vFileStream := TFileStream.Create(FileName,fmCreate);
+ Try
+ SaveToStream(Dataset,TStream(vFileStream));
+ Except
+ End;
+ Finally
+ vFileStream.Free;
+ End;
+End;
+
+Procedure TRESTDWStorageBase.SaveToStream(Dataset: TDataset; Var stream: TStream);
+Begin
+ SaveDatasetToStream(Dataset, stream);
+End;
+
+Constructor TConnectionDefs.Create;
+Begin
+ Inherited;
+ vdbPort := -1;
+ vDWDatabaseType := dbtUndefined;
+End;
+
+Destructor TConnectionDefs.Destroy;
+Begin
+ Inherited;
+End;
+
+Function TConnectionDefs.GetDatabaseType(Value : String) : TRESTDWDatabaseType;
+Begin
+ Result := dbtUndefined;
+ If LowerCase(Value) = LowerCase('dbtUndefined') Then
+ Result := dbtUndefined
+ Else If LowerCase(Value) = LowerCase('dbtAccess') Then
+ Result := dbtAccess
+ Else If LowerCase(Value) = LowerCase('dbtDbase') Then
+ Result := dbtDbase
+ Else If LowerCase(Value) = LowerCase('dbtFirebird') Then
+ Result := dbtFirebird
+ Else If LowerCase(Value) = LowerCase('dbtInterbase') Then
+ Result := dbtInterbase
+ Else If LowerCase(Value) = LowerCase('dbtMySQL') Then
+ Result := dbtMySQL
+ Else If LowerCase(Value) = LowerCase('dbtMsSQL') Then
+ Result := dbtMsSQL
+ Else If LowerCase(Value) = LowerCase('dbtOracle') Then
+ Result := dbtOracle
+ Else If LowerCase(Value) = LowerCase('dbtODBC') Then
+ Result := dbtODBC
+ Else If LowerCase(Value) = LowerCase('dbtParadox') Then
+ Result := dbtParadox
+ Else If LowerCase(Value) = LowerCase('dbtPostgreSQL') Then
+ Result := dbtPostgreSQL
+ Else If LowerCase(Value) = LowerCase('dbtSQLLite') Then
+ Result := dbtSQLLite
+ Else If LowerCase(Value) = LowerCase('dbtAdo') Then
+ Result := dbtAdo;
+End;
+
+Function TConnectionDefs.GetDatabaseType(Value : TRESTDWDatabaseType) : String;
+Begin
+ Case Value Of
+ dbtUndefined : Result := LowerCase('dbtUndefined');
+ dbtAccess : Result := LowerCase('dbtAccess');
+ dbtDbase : Result := LowerCase('dbtDbase');
+ dbtFirebird : Result := LowerCase('dbtFirebird');
+ dbtInterbase : Result := LowerCase('dbtInterbase');
+ dbtMySQL : Result := LowerCase('dbtMySQL');
+ dbtSQLLite : Result := LowerCase('dbtSQLLite');
+ dbtOracle : Result := LowerCase('dbtOracle');
+ dbtMsSQL : Result := LowerCase('dbtMsSQL');
+ dbtParadox : Result := LowerCase('dbtParadox');
+ dbtPostgreSQL : Result := LowerCase('dbtPostgreSQL');
+ dbtODBC : Result := LowerCase('dbtODBC');
+ dbtAdo : Result := LowerCase('dbtAdo');
+ End;
+End;
+
+Procedure TConnectionDefs.Assign(Source : TPersistent);
+Var
+ Src : TConnectionDefs;
+Begin
+ If Source is TConnectionDefs Then
+ Begin
+ Src := TConnectionDefs(Source);
+ votherDetails := Src.votherDetails;
+ vDatabaseName := Src.vDatabaseName;
+ vHostName := Src.vHostName;
+ vUsername := Src.vUsername;
+ vPassword := Src.vPassword;
+ vdbPort := Src.vdbPort;
+ vDriverID := Src.vDriverID;
+ vDataSource := Src.vDataSource;
+ End
+ Else
+ Inherited;
+End;
+
+Function TConnectionDefs.ToJSON : String;
+Begin
+ Result := Format('{"databasename":"%s","hostname":"%s",'+
+ '"username":"%s","password":"%s","dbPort":%d,'+
+ '"otherDetails":"%s","charset":"%s","databasetype":"%s","protocol":"%s",'+
+ '"driverID":"%s","datasource":"%s"}',
+ [EncodeStrings(vDatabaseName{$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vHostName {$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vUsername {$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vPassword {$IFDEF FPC}, csUndefined{$ENDIF}),
+ vdbPort,
+ EncodeStrings(votherDetails{$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vCharset {$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(GetDatabaseType(vDWDatabaseType){$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vProtocol {$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vDriverID {$IFDEF FPC}, csUndefined{$ENDIF}),
+ EncodeStrings(vDataSource{$IFDEF FPC}, csUndefined{$ENDIF})]);
+End;
+
+Procedure TConnectionDefs.LoadFromJSON(Value : String);
+Var
+ bJsonValue : TRESTDWJSONInterfaceObject;
+Begin
+ bJsonValue := TRESTDWJSONInterfaceObject.Create(Value);
+ Try
+ If bJsonValue.PairCount > 0 Then
+ Begin
+ vDatabaseName := DecodeStrings(bJsonValue.Pairs[0].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vHostName := DecodeStrings(bJsonValue.Pairs[1].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vUsername := DecodeStrings(bJsonValue.Pairs[2].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vPassword := DecodeStrings(bJsonValue.Pairs[3].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ If bJsonValue.Pairs[4].Value <> '' Then
+ vdbPort := StrToInt(bJsonValue.Pairs[4].Value)
+ Else
+ vdbPort := -1;
+ votherDetails := DecodeStrings(bJsonValue.Pairs[5].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vCharset := DecodeStrings(bJsonValue.Pairs[6].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vDWDatabaseType := GetDatabaseType(DecodeStrings(bJsonValue.Pairs[7].Value{$IFDEF FPC}, csUndefined{$ENDIF}));
+ vProtocol := DecodeStrings(bJsonValue.Pairs[8].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vDriverID := DecodeStrings(bJsonValue.Pairs[9].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ vDataSource := DecodeStrings(bJsonValue.Pairs[10].Value{$IFDEF FPC}, csUndefined{$ENDIF});
+ End;
+ Finally
+ FreeAndNil(bJsonValue);
+ End;
+End;
+
+// === { TRESTDWMTMemoryRecord } ====================================================
+Constructor TRESTDWMTMemoryRecord.Create(MemoryData: TRESTDWMemTableAE);
+Begin
+ FIsNull := True;
+ FIndex := -1;
+ CreateEx(MemoryData, True);
+End;
+
+Constructor TRESTDWMTMemoryRecord.CreateEx(MemoryData: TRESTDWMemTableAE; UpdateParent: Boolean);
+Begin
+ Inherited Create;
+ SetMemoryData(MemoryData, UpdateParent);
+End;
+
+Destructor TRESTDWMTMemoryRecord.Destroy;
+Begin
+ SetMemoryData(Nil, False);
+// Finalize(FBlobs);
+// SetLength(FBlobs, 0);
+ Inherited Destroy;
+End;
+
+Function TRESTDWMTMemoryRecord.GetIndex: Integer;
+Begin
+// If FMemoryData <> Nil then
+// Result := FMemoryData.FRecords.IndexOf(Self)
+// Else
+ Result := FIndex;
+End;
+
+Procedure TRESTDWMTMemoryRecord.SetMemoryData(Value: TRESTDWMemTableAE; UpdateParent: Boolean);
+var
+ I, DataSize: Integer;
+Begin
+ If FMemoryData <> Value then
+ Begin
+ If FMemoryData <> nil then
+ Begin
+ If TRESTDWMemTable(FMemoryData).BlobFieldCount > 0 Then
+ Begin
+// {$IFDEF FPC}
+ SetLength(FBlobs, 0); //Finalize(FBlobs, FMemoryData.BlobFieldCount);
+// {$ELSE}
+// Finalize(FBlobs);
+// {$ENDIF}
+ End;
+ TRESTDWMemTable(FMemoryData).FRecords.Remove(Self);
+ {$IFDEF FPC}
+ ReallocMem(FData, 0);
+ {$ELSE}
+ FreeMem(FData, SizeOf(FData));
+// ReallocMem(FData, 0);
+ {$ENDIF}
+ FMemoryData := Nil;
+ End;
+ If Value <> Nil then
+ Begin
+ If UpdateParent then
+ Begin
+ TRESTDWMemTable(Value).FRecords.Add(Self);
+ Inc(TRESTDWMemTable(Value).FLastID);
+ FID := TRESTDWMemTable(Value).FLastID;
+ End;
+ FMemoryData := Value;
+ If TRESTDWMemTable(Value).BlobFieldCount > 0 then
+ Begin
+ SetLength(FBlobs, 0);
+ SetLength(FBlobs, TRESTDWMemTable(Value).BlobFieldCount);
+ End;
+ DataSize := 0;
+ For I := 0 to TRESTDWMemTable(Value).Fields.Count - 1 do
+ CalcDataSize(TRESTDWMemTable(Value).Fields[I], DataSize);
+ ReallocMem(FData, DataSize);
+ End;
+ End;
+End;
+
+Procedure TRESTDWMTMemoryRecord.SetIndex(Value: Integer);
+var
+ CurIndex: Integer;
+Begin
+ CurIndex := GetIndex;
+ If (CurIndex >= 0) and (CurIndex <> Value) then
+ TRESTDWMemTable(FMemoryData).FRecords.Move(CurIndex, Value);
+ FIndex := Value;
+End;
+
+end.
diff --git a/CORE/Source/Basic/uRESTDWBasicTypes.pas b/CORE/Source/Basic/uRESTDWBasicTypes.pas
index 54766db5..20b16d41 100644
--- a/CORE/Source/Basic/uRESTDWBasicTypes.pas
+++ b/CORE/Source/Basic/uRESTDWBasicTypes.pas
@@ -37,9 +37,33 @@
DbTables,
{$IFEND}
{$ENDIF}
- SysUtils, Classes, Db, FMTBcd,
- uRESTDWAbout, uRESTDWMemoryDataset, uRESTDWConsts,
- uRESTDWProtoTypes, uRESTDWTools;
+ SysUtils, Classes, Db, FMTBcd,
+ uRESTDWAbout, uRESTDWConsts,
+ uRESTDWProtoTypes, uRESTDWTools,
+ uRESTDWBasicDbTypes
+ {$IFDEF UNIDACMEM}
+ , DADump, UniDump, VirtualTable, MemDS
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ , ZAbstractRODataset, ZAbstractDataset, ZMemTable, ZDataset
+ {$ENDIF}
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 22} // Delphi 2010 pra cima
+ {$IFDEF RESTFDMEMTABLE}
+ , FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
+ FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
+ FireDAC.Comp.DataSet, FireDAC.Comp.Client
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 26} // Delphi XE6 pra cima
+ , FireDAC.Stan.StorageBin
+ {$IFEND}
+ {$ENDIF}
+ {$ENDIF}
+ {$IFEND}
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ , uRESTDWMemoryDataset
+ {$ENDIF} ;
Type
TFieldDefinition = Class
@@ -57,6 +81,7 @@
MessageText: String;
End;
+ {$IFDEF FPC}
Type
TSQLTimeStamp = Record
Year,
@@ -67,20 +92,7 @@
Second : Word;
Fractions : Cardinal;
End;
-
-type
- TSQLTimeStampOffset = record
- Year,
- Month,
- Day,
- Hour,
- Minute,
- Second : Word;
- Fractions : Cardinal;
- TimeZoneHour: SmallInt;
- TimeZoneMinute: SmallInt;
- end;
-
+ {$ENDIF}
Type
TClassNull= Class(TComponent)
@@ -109,44 +121,6 @@ TSQLTimeStampOffset = record
property ProxyUsername : String Read FUsername Write FUserName;
End;
-
- Type
- TConnectionDefs = Class(TPersistent)
- Private
- votherDetails,
- vCharset,
- vDatabaseName,
- vHostName,
- vUsername,
- vPassword,
- vProtocol,
- vDriverID,
- vDataSource : String;
- vdbPort : Integer;
- vDWDatabaseType : TRESTDWDatabaseType;
- Private
- Function GetDatabaseType(Value : String) : TRESTDWDatabaseType;Overload;
- Function GetDatabaseType(Value : TRESTDWDatabaseType) : String; Overload;
- Public
- Constructor Create; //Cria o Componente
- Destructor Destroy;Override;//Destroy a Classe
- Procedure Assign(Source : TPersistent); Override;
- Function ToJSON : String;
- Procedure LoadFromJSON(Value : String);
- Published
- Property DriverType : TRESTDWDatabaseType Read vDWDatabaseType Write vDWDatabaseType;
- Property Charset : String Read vCharset Write vCharset;
- Property DriverID : String Read vDriverID Write vDriverID;
- Property DatabaseName : String Read vDatabaseName Write vDatabaseName;
- Property HostName : String Read vHostName Write vHostName;
- Property Username : String Read vUsername Write vUsername;
- Property Password : String Read vPassword Write vPassword;
- Property Protocol : String Read vProtocol Write vProtocol;
- Property DBPort : Integer Read vdbPort Write vdbPort;
- Property DataSource : String Read vDataSource Write vDataSource;
- Property OtherDetails : String Read votherDetails Write votherDetails;
- End;
-
Type
TRESTDWDataRoute = Class
Private
@@ -248,7 +222,30 @@ TSQLTimeStampOffset = record
End;
Type
- TRESTDWClientSQLBase = Class(TRESTDWMemTableEx) //Classe com as funcionalidades de um DBQuery
+ {$IFDEF FPC}
+ {$IFDEF UNIDACMEM}
+ TRESTDWClientSQLBase = Class(TVirtualTable)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TRESTDWClientSQLBase = Class(TZMemTable)
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWClientSQLBase = Class(TRESTDWMemTableEx) //Classe com as funcionalidades de um DBQuery
+ {$ENDIF}
+ {$ELSE}
+ {$IFDEF UNIDACMEM}
+ TRESTDWClientSQLBase = Class(TVirtualTable)
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TRESTDWClientSQLBase = Class(TZMemTable)
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TRESTDWClientSQLBase = Class(TFDMemtable) //Classe com as funcionalidades de um DBQuery
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWClientSQLBase = Class(TRESTDWMemTableEx) //Classe com as funcionalidades de um DBQuery
+ {$ENDIF}
+ {$ENDIF}
Private
fsAbout : TRESTDWAboutInfo;
vComponentTag,
@@ -261,6 +258,7 @@ TSQLTimeStampOffset = record
vOnWriterProcess : TOnWriterProcess;
Function OnEditingState : Boolean;
Public
+ Property BinaryCompatibleMode : Boolean Read vBinaryCompatibleMode;
Procedure BaseOpen;
Procedure BaseClose;
Procedure ForceInternalCalc;
@@ -311,6 +309,8 @@ TSQLTimeStampOffset = record
uRESTDWDataJSON, uRESTDWJSONInterface, uRESTDWBasicDB,
uRESTDWDataUtils, uRESTDWMimeTypes;
+{ TRESTDWStorageBase }
+
Class Function TRESTDWStreamHelper.ReadBytes(Const AStream : TStream;
Var VBytes : TRESTDWBytes;
Const ACount,
@@ -442,135 +442,6 @@ TSQLTimeStampOffset = record
Inherited Create(AFile, fmOpenRead or fmShareDenyWrite);
End;
-Constructor TConnectionDefs.Create;
-Begin
- Inherited;
- vdbPort := -1;
- vDWDatabaseType := dbtUndefined;
-End;
-
-Destructor TConnectionDefs.Destroy;
-Begin
- Inherited;
-End;
-
-Function TConnectionDefs.GetDatabaseType(Value : String) : TRESTDWDatabaseType;
-Begin
- Result := dbtUndefined;
- If LowerCase(Value) = LowerCase('dbtUndefined') Then
- Result := dbtUndefined
- Else If LowerCase(Value) = LowerCase('dbtAccess') Then
- Result := dbtAccess
- Else If LowerCase(Value) = LowerCase('dbtDbase') Then
- Result := dbtDbase
- Else If LowerCase(Value) = LowerCase('dbtFirebird') Then
- Result := dbtFirebird
- Else If LowerCase(Value) = LowerCase('dbtInterbase') Then
- Result := dbtInterbase
- Else If LowerCase(Value) = LowerCase('dbtMySQL') Then
- Result := dbtMySQL
- Else If LowerCase(Value) = LowerCase('dbtMsSQL') Then
- Result := dbtMsSQL
- Else If LowerCase(Value) = LowerCase('dbtOracle') Then
- Result := dbtOracle
- Else If LowerCase(Value) = LowerCase('dbtODBC') Then
- Result := dbtODBC
- Else If LowerCase(Value) = LowerCase('dbtParadox') Then
- Result := dbtParadox
- Else If LowerCase(Value) = LowerCase('dbtPostgreSQL') Then
- Result := dbtPostgreSQL
- Else If LowerCase(Value) = LowerCase('dbtSQLLite') Then
- Result := dbtSQLLite
- Else If LowerCase(Value) = LowerCase('dbtAdo') Then
- Result := dbtAdo;
-End;
-
-Function TConnectionDefs.GetDatabaseType(Value : TRESTDWDatabaseType) : String;
-Begin
- Case Value Of
- dbtUndefined : Result := LowerCase('dbtUndefined');
- dbtAccess : Result := LowerCase('dbtAccess');
- dbtDbase : Result := LowerCase('dbtDbase');
- dbtFirebird : Result := LowerCase('dbtFirebird');
- dbtInterbase : Result := LowerCase('dbtInterbase');
- dbtMySQL : Result := LowerCase('dbtMySQL');
- dbtSQLLite : Result := LowerCase('dbtSQLLite');
- dbtOracle : Result := LowerCase('dbtOracle');
- dbtMsSQL : Result := LowerCase('dbtMsSQL');
- dbtParadox : Result := LowerCase('dbtParadox');
- dbtPostgreSQL : Result := LowerCase('dbtPostgreSQL');
- dbtODBC : Result := LowerCase('dbtODBC');
- dbtAdo : Result := LowerCase('dbtAdo');
- End;
-End;
-
-Procedure TConnectionDefs.Assign(Source : TPersistent);
-Var
- Src : TConnectionDefs;
-Begin
- If Source is TConnectionDefs Then
- Begin
- Src := TConnectionDefs(Source);
- votherDetails := Src.votherDetails;
- vDatabaseName := Src.vDatabaseName;
- vHostName := Src.vHostName;
- vUsername := Src.vUsername;
- vPassword := Src.vPassword;
- vdbPort := Src.vdbPort;
- vDriverID := Src.vDriverID;
- vDataSource := Src.vDataSource;
- End
- Else
- Inherited;
-End;
-
-Function TConnectionDefs.ToJSON : String;
-Begin
- Result := Format('{"databasename":"%s","hostname":"%s",'+
- '"username":"%s","password":"%s","dbPort":%d,'+
- '"otherDetails":"%s","charset":"%s","databasetype":"%s","protocol":"%s",'+
- '"driverID":"%s","datasource":"%s"}',
- [EncodeStrings(vDatabaseName{$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vHostName {$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vUsername {$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vPassword {$IFDEF FPC}, csUndefined{$ENDIF}),
- vdbPort,
- EncodeStrings(votherDetails{$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vCharset {$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(GetDatabaseType(vDWDatabaseType){$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vProtocol {$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vDriverID {$IFDEF FPC}, csUndefined{$ENDIF}),
- EncodeStrings(vDataSource{$IFDEF FPC}, csUndefined{$ENDIF})]);
-End;
-
-Procedure TConnectionDefs.LoadFromJSON(Value : String);
-Var
- bJsonValue : TRESTDWJSONInterfaceObject;
-Begin
- bJsonValue := TRESTDWJSONInterfaceObject.Create(Value);
- Try
- If bJsonValue.PairCount > 0 Then
- Begin
- vDatabaseName := DecodeStrings(bJsonValue.Pairs[0].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vHostName := DecodeStrings(bJsonValue.Pairs[1].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vUsername := DecodeStrings(bJsonValue.Pairs[2].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vPassword := DecodeStrings(bJsonValue.Pairs[3].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- If bJsonValue.Pairs[4].Value <> '' Then
- vdbPort := StrToInt(bJsonValue.Pairs[4].Value)
- Else
- vdbPort := -1;
- votherDetails := DecodeStrings(bJsonValue.Pairs[5].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vCharset := DecodeStrings(bJsonValue.Pairs[6].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vDWDatabaseType := GetDatabaseType(DecodeStrings(bJsonValue.Pairs[7].Value{$IFDEF FPC}, csUndefined{$ENDIF}));
- vProtocol := DecodeStrings(bJsonValue.Pairs[8].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vDriverID := DecodeStrings(bJsonValue.Pairs[9].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- vDataSource := DecodeStrings(bJsonValue.Pairs[10].Value{$IFDEF FPC}, csUndefined{$ENDIF});
- End;
- Finally
- FreeAndNil(bJsonValue);
- End;
-End;
-
Function RPos(const Substr, S: string): Integer;
Var
I, X, Len: Integer;
@@ -620,7 +491,11 @@ TSQLTimeStampOffset = record
vOnWriterProcess := Nil;
vBinaryCompatibleMode := False;
vLoadFromStream := False;
- vBinaryCompatibleMode := True;
+ {$IFDEF RESTDWMEMTABLE}
+ vBinaryCompatibleMode := True;
+ {$ELSE}
+ vBinaryCompatibleMode := False;
+ {$ENDIF}
End;
Function TRESTDWClientSQLBase.OnEditingState: Boolean;
diff --git a/CORE/Source/Basic/uRESTDWComponentEvents.pas b/CORE/Source/Basic/uRESTDWComponentEvents.pas
index 106595c8..f3bda322 100644
--- a/CORE/Source/Basic/uRESTDWComponentEvents.pas
+++ b/CORE/Source/Basic/uRESTDWComponentEvents.pas
@@ -32,7 +32,7 @@ interface
Uses
SysUtils, Classes, Db,
- uRESTDWDataUtils, uRESTDWParams, uRESTDWBasicTypes, uRESTDWProtoTypes,
+ uRESTDWDataUtils, uRESTDWParams, uRESTDWBasicDbTypes, uRESTDWProtoTypes,
uRESTDWConsts, uRESTDWMassiveBuffer, uRESTDWAuthenticators;
Type
diff --git a/CORE/Source/Basic/uRESTDWDesignReg.pas b/CORE/Source/Basic/uRESTDWDesignReg.pas
index 5b8a99a3..a51c986b 100644
--- a/CORE/Source/Basic/uRESTDWDesignReg.pas
+++ b/CORE/Source/Basic/uRESTDWDesignReg.pas
@@ -27,14 +27,14 @@ interface
uses
{$IFDEF FPC}
- {$IFNDEF RESTDWLAMW}StdCtrls, {$ENDIF}
+ {$IFNDEF RESTDWLAMW}StdCtrls, {$ENDIF}
ComCtrls, Forms, ExtCtrls, DBCtrls, DBGrids, Dialogs, Controls,
LResources, LazFileUtils,
- {$IFNDEF RESTDWLAMW}
- FormEditingIntf, PropEdits, lazideintf,
- ProjectIntf, ComponentEditors,
- {$ENDIF}
- fpWeb, TypInfo,
+ {$IFNDEF RESTDWLAMW}
+ FormEditingIntf, PropEdits, lazideintf,
+ ProjectIntf, ComponentEditors,
+ {$ENDIF}
+ fpWeb, TypInfo,
{$ELSE}
{$IFNDEF RESTDWLAMW}
Windows,
@@ -56,8 +56,9 @@ interface
Menus,
{$ENDIF}
uRESTDWBasicClass, uRESTDWDatamodule, uRESTDWServerEvents, uRESTDWBasicDB,
- uRESTDWServerContext, uRESTDWServerRoutes, uRESTDWMassiveBuffer, uRESTDWMemoryDataset,
- uRESTDWBufferDb, uRESTDWAbout, uRESTDWDriverBase, uRESTDWAuthenticators;
+ uRESTDWServerContext, uRESTDWServerRoutes, uRESTDWMassiveBuffer,
+ uRESTDWMemoryDataset, uRESTDWBufferDb, uRESTDWAbout, uRESTDWDriverBase,
+ uRESTDWAuthenticators;
{$IFNDEF RESTDWDELPHINET}
Const
@@ -151,7 +152,7 @@ TDriverConnectionListProperty = class(TComponentProperty)
{$IFNDEF RESTDWLAZARUS}
Type
- TDSDesignerDW = Class(TDSDesigner)
+ TRESTDWDesigner = Class(TDSDesigner)
Private
Public
{$IFDEF DELPHI2006UP}
@@ -431,10 +432,9 @@ procedure UnregisterAboutBox;
{$ENDIF}
{$ENDIF}
-
{$IFNDEF RESTDWLAMW}
{$IFNDEF RESTDWLAZARUS}
-Procedure TDSDesignerDW.BeginUpdateFieldDefs;
+Procedure TRESTDWDesigner.BeginUpdateFieldDefs;
Var
Idx: Integer;
Begin
@@ -446,21 +446,21 @@ procedure UnregisterAboutBox;
End;
End;
-Procedure TDSDesignerDW.EndUpdateFieldDefs;
+Procedure TRESTDWDesigner.EndUpdateFieldDefs;
Begin
Inherited;
If TRESTDWClientSQL(DataSet).Active Then
TRESTDWClientSQL(DataSet).Close;
End;
-Procedure TDSDesignerDW.InitializeMenu(Menu: TPopupMenu);
+Procedure TRESTDWDesigner.InitializeMenu(Menu: TPopupMenu);
Begin
Inherited;
// Ao clicar duas vezes no componente RESTDWClientSQL
// ou ao selecionar no popup menu opção "Fields Editor".
End;
-Procedure TDSDesignerDW.UpdateMenus(Menu: TPopupMenu; EditState: TEditState);
+Procedure TRESTDWDesigner.UpdateMenus(Menu: TPopupMenu; EditState: TEditState);
Begin
// Ao acionar o popup menu dos Fields persistents: (Add, Add All, New Field)
Inherited;
@@ -478,7 +478,7 @@ procedure UnregisterAboutBox;
TRESTDWClientSQL(Component).Close;
TRESTDWClientSQL(Component).CreateDatasetFromList;
{$ENDIF}
- ShowFieldsEditor(Designer, TRESTDWClientSQL(Component), TDSDesignerDW);
+ ShowFieldsEditor(Designer, TRESTDWClientSQL(Component), TRESTDWDesigner);
Finally
{$IFDEF DELPHIXEUP}
TRESTDWClientSQL(Component).SetInDesignEvents(False);
@@ -511,9 +511,9 @@ procedure TRESTDWClientSQLEditor.ExecuteVerb(Index: Integer);
End;
{$IFDEF DELPHI2006UP}
-Function TDSDesignerDW.DoCreateField(const FieldName: WideString; Origin: string): TField;
+Function TRESTDWDesigner.DoCreateField(const FieldName: WideString; Origin: string): TField;
{$ELSE}
-Function TDSDesignerDW.DoCreateField(const FieldName: String; Origin: string): TField;
+Function TRESTDWDesigner.DoCreateField(const FieldName: String; Origin: string): TField;
{$ENDIF}
Var
F: TField;
@@ -560,12 +560,12 @@ procedure TRESTDWClientSQLEditor.ExecuteVerb(Index: Integer);
End;
End;
-Function TDSDesignerDW.SupportsAggregates: Boolean;
+Function TRESTDWDesigner.SupportsAggregates: Boolean;
Begin
Result := True;
End;
-Function TDSDesignerDW.SupportsInternalCalc: Boolean;
+Function TRESTDWDesigner.SupportsInternalCalc: Boolean;
Begin
Result := True;
End;
@@ -787,9 +787,16 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
Begin
{$IFDEF FPC}
// RegFields(DefaultFieldClasses);
- RegField(TExtendedField);
+ RegField(TRESTDWNumericField);
+ RegField(TStringFieldRESTDW);
+ RegField(TStreamField);
+// RegField(TRESTDWSQLTimeStampOffsetField);
{$ELSE}
-// RegisterFields([TExtendedField]);
+ {$IFDEF RESTDWMEMTABLE}
+ RegisterFields([TStringFieldRESTDW]);
+ RegisterFields([TRESTDWNumericField]);
+ RegisterFields([TStreamField]);
+ {$ENDIF}
{$ENDIF}
{$IFDEF FPC}
{$I RESTDataWareComponents_LAMW.lrs}
@@ -819,7 +826,7 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
{$IFNDEF RESTDWLAMW}
RegisterComponents('REST Dataware - Tools', [TRESTDWResponseTranslator, TRESTDWBufferDB]);
{$ENDIF}
- RegisterComponents('REST Dataware - DB', [TRESTDWPoolerDB, TRESTDWMemTable, TRESTDWClientSQL,
+ RegisterComponents('REST Dataware - DB', [TRESTDWPoolerDB, TRESTDWMemTable, TRESTDWClientSQL,
TRESTDWTable, TRESTDWUpdateSQL, TRESTDWMassiveSQLCache,
TRESTDWStoredProcedure, TRESTDWMassiveCache, TRESTDWBatchMove]);
RegisterComponents('REST Dataware - Authenticators', [TRESTDWAuthBasic, TRESTDWAuthToken, TRESTDWAuthOAuth]);
diff --git a/CORE/Source/Basic/uRESTDWParams.pas b/CORE/Source/Basic/uRESTDWParams.pas
index cafa3a02..7162215d 100644
--- a/CORE/Source/Basic/uRESTDWParams.pas
+++ b/CORE/Source/Basic/uRESTDWParams.pas
@@ -637,8 +637,8 @@ implementation
If (Pos('.', vTempValue) > 0) Or
(Pos(':', vTempValue) > 0) Or
(Pos('/', vTempValue) > 0) Or
- (Pos('\', vTempValue) > 0)
- //(Pos('-', vTempValue) > 0)
+ (Pos('\', vTempValue) > 0) Or
+ (Pos('-', vTempValue) > 0)
// Or (vTempValue.CountChar('-')>1) //Testar XyberX
Then
Field.AsDateTime := StrToDateTime(vTempValue)
@@ -833,7 +833,7 @@ procedure TRESTDWParamsMethods.PutRecName(Index: String; Item: TRESTDWParamMetho
{$IFDEF DELPHI2010UP}
vRESTDWBytes := StringUtf8ToBytes(DecodeStrings(vTempString{$IFDEF FPC}, csUndefined{$ENDIF}));
If Length(vRESTDWBytes) > 0 Then
- vTempString:= TEncoding.UTF8.Getstring(vRESTDWBytes)
+ vTempString:= TEncoding.UTF8.Getstring(TBytes(vRESTDWBytes))
Else
vTempString:= '';
SetLength(vRESTDWBytes, 0);
@@ -6683,14 +6683,14 @@ procedure TRESTDWJSONParam.SetParamContentType(const bValue: String);
Procedure TRESTDWParams.SetCriptOptions(Use : Boolean;
Key : String);
-Var
- I : Integer;
+//Var
+// I : Integer;
Begin
- For I := 0 To Count -1 Do
- Begin
+// For I := 0 To Count -1 Do
+// Begin
// Items[I].CriptOptions.Use := Use;
// Items[I].CriptOptions.Key := Key;
- End;
+// End;
End;
end.
diff --git a/CORE/Source/Basic/uRESTDWPoolermethod.pas b/CORE/Source/Basic/uRESTDWPoolermethod.pas
index 336b9de2..d26dbbdb 100644
--- a/CORE/Source/Basic/uRESTDWPoolermethod.pas
+++ b/CORE/Source/Basic/uRESTDWPoolermethod.pas
@@ -33,7 +33,7 @@
Uses
{$IFDEF RESTDWWINDOWS}Windows,{$ENDIF}
SysUtils, Classes,
- uRESTDWMassiveBuffer, uRESTDWComponentEvents, uRESTDWBasicTypes, uRESTDWBasic,
+ uRESTDWMassiveBuffer, uRESTDWComponentEvents, uRESTDWBasicDbTypes, uRESTDWBasic,
uRESTDWProtoTypes, uRESTDWTools, uRESTDWJSONObject, uRESTDWConsts,
uRESTDWDataUtils, uRESTDWParams;
diff --git a/CORE/Source/Basic/uRESTDWProtoTypes.pas b/CORE/Source/Basic/uRESTDWProtoTypes.pas
index 2acf1966..7baf778c 100644
--- a/CORE/Source/Basic/uRESTDWProtoTypes.pas
+++ b/CORE/Source/Basic/uRESTDWProtoTypes.pas
@@ -153,6 +153,7 @@ interface
{$IFDEF RESTDWLAZARUS}
DWSmallint = Smallint;
DWInteger = Longint;
+ DWLongint = Largeint;
DWInt16 = Integer;
DWInt64 = Int64;
DWInt32 = Int32;
@@ -174,6 +175,7 @@ interface
DWInt16 = Integer;
DWInt64 = Int64;
DWInt32 = Longint;
+ DWLongint = Longint;
DWFloat = Real;
DWSingle = Single;
DWDouble = Double;
diff --git a/CORE/Source/Basic/uRESTDWServerEvents.pas b/CORE/Source/Basic/uRESTDWServerEvents.pas
index 05a6b314..73a8b5ad 100644
--- a/CORE/Source/Basic/uRESTDWServerEvents.pas
+++ b/CORE/Source/Basic/uRESTDWServerEvents.pas
@@ -557,8 +557,9 @@ function TRESTDWEventList.GetRec(Index: Integer): TRESTDWEvent;
function TRESTDWEventList.GetRecName(Index: String): TRESTDWEvent;
Var
- I : Integer;
+ X, Z : Integer;
aIndex : String;
+ vExit : Boolean;
Begin
Result := Nil;
aIndex := Index;
@@ -568,13 +569,29 @@ function TRESTDWEventList.GetRecName(Index: String): TRESTDWEvent;
(aIndex[Length(aIndex) - FinalStrPos] = '/') Then
DeleteStr(aIndex, Length(aIndex) - FinalStrPos, 1);
End;
- For I := 0 To Self.Count - 1 Do
+ X := 0;
+ Z := Self.Count;
+ vExit := Z = 0;
+ If Not vExit Then
Begin
- If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[I]).EventName)) Or
- (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[I]).BaseURL + TRESTDWEvent(Items[I]).EventName)) Then
+ While (X <> Z) Do
Begin
- Result := TRESTDWEvent(Self.Items[I]);
- Break;
+// For I := 0 To Self.Count - 1 Do
+ If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[X]).EventName)) Or
+ (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[X]).BaseURL + TRESTDWEvent(Items[X]).EventName)) Then
+ Begin
+ Result := TRESTDWEvent(Self.Items[X]);
+ Break;
+ End;
+ Dec(Z);
+ If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[Z]).EventName)) Or
+ (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[Z]).BaseURL + TRESTDWEvent(Items[Z]).EventName)) Then
+ Begin
+ Result := TRESTDWEvent(Self.Items[Z]);
+ Break;
+ End;
+ If Z <> X Then
+ Inc(X);
End;
End;
End;
@@ -651,37 +668,39 @@ procedure TRESTDWEventList.PutRecName(Index: String; Item: TRESTDWEvent);
dwParam : TRESTDWJSONParam;
I : Integer;
vFound : Boolean;
+ vEvent : TRESTDWEvent;
Begin
vParamNameS := '';
- If vEventList.EventByName[EventName] <> Nil Then
+ vEvent := vEventList.EventByName[EventName];
+ If vEvent <> Nil Then
Begin
If Not Assigned(DWParams) Then
DWParams := TRESTDWParams.Create;
- DWParams.DataMode := vEventList.EventByName[EventName].DataMode;
- For I := 0 To vEventList.EventByName[EventName].vDWParams.Count -1 Do
+ DWParams.DataMode := vEvent.DataMode;
+ For I := 0 To vEvent.vDWParams.Count -1 Do
Begin
vParamNameS := '';
- vFound := (DWParams.ItemsString[vEventList.EventByName[EventName].vDWParams.Items[I].ParamName] <> Nil);
+ vFound := (DWParams.ItemsString[vEvent.vDWParams.Items[I].ParamName] <> Nil);
If vFound Then
- vParamNameS := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName
+ vParamNameS := vEvent.vDWParams.Items[I].ParamName
Else
Begin
- vFound := (DWParams.ItemsString[vEventList.EventByName[EventName].vDWParams.Items[I].Alias] <> Nil);
+ vFound := (DWParams.ItemsString[vEvent.vDWParams.Items[I].Alias] <> Nil);
If vFound Then
- vParamNameS := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
+ vParamNameS := vEvent.vDWParams.Items[I].Alias;
End;
If Not(vFound) Then
Begin
dwParam := TRESTDWJSONParam.Create(DWParams.Encoding);
- dwParam.Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
- dwParam.ParamName := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName;
- dwParam.ObjectDirection := vEventList.EventByName[EventName].vDWParams.Items[I].ObjectDirection;
- dwParam.ObjectValue := vEventList.EventByName[EventName].vDWParams.Items[I].ObjectValue;
- dwParam.Encoded := vEventList.EventByName[EventName].vDWParams.Items[I].Encoded;
+ dwParam.Alias := vEvent.vDWParams.Items[I].Alias;
+ dwParam.ParamName := vEvent.vDWParams.Items[I].ParamName;
+ dwParam.ObjectDirection := vEvent.vDWParams.Items[I].ObjectDirection;
+ dwParam.ObjectValue := vEvent.vDWParams.Items[I].ObjectValue;
+ dwParam.Encoded := vEvent.vDWParams.Items[I].Encoded;
dwParam.DataMode := DWParams.DataMode;
- If (vEventList.EventByName[EventName].vDWParams.Items[I].DefaultValue <> '') And
+ If (vEvent.vDWParams.Items[I].DefaultValue <> '') And
(Trim(dwParam.AsString) = '') Then
- dwParam.Value := vEventList.EventByName[EventName].vDWParams.Items[I].DefaultValue;
+ dwParam.Value := vEvent.vDWParams.Items[I].DefaultValue;
DWParams.Add(dwParam);
End
Else
@@ -689,13 +708,13 @@ procedure TRESTDWEventList.PutRecName(Index: String; Item: TRESTDWEvent);
If (DWParams.ItemsString[vParamNameS].ParamName = '') Or
((DWParams.ItemsString[vParamNameS].ParamName <> '') And
(Lowercase(DWParams.ItemsString[vParamNameS].ParamName) <>
- Lowercase(vEventList.EventByName[EventName].vDWParams.Items[I].ParamName))) Then
+ Lowercase(vEvent.vDWParams.Items[I].ParamName))) Then
Begin
- DWParams.ItemsString[vParamNameS].Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
- DWParams.ItemsString[vParamNameS].ParamName := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName;
+ DWParams.ItemsString[vParamNameS].Alias := vEvent.vDWParams.Items[I].Alias;
+ DWParams.ItemsString[vParamNameS].ParamName := vEvent.vDWParams.Items[I].ParamName;
End;
If DWParams.ItemsString[vParamNameS].Alias = '' Then
- DWParams.ItemsString[vParamNameS].Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
+ DWParams.ItemsString[vParamNameS].Alias := vEvent.vDWParams.Items[I].Alias;
End;
End;
End
diff --git a/CORE/Source/Basic/uRESTDWStorageBin.pas b/CORE/Source/Basic/uRESTDWStorageBin.pas
index 0857f5a0..3f2b2369 100644
--- a/CORE/Source/Basic/uRESTDWStorageBin.pas
+++ b/CORE/Source/Basic/uRESTDWStorageBin.pas
@@ -33,8 +33,29 @@ interface
uses
{$IFNDEF RESTDWLAZARUS}{$IFNDEF RESTDWFPC}SqlTimSt, {$ENDIF}{$ENDIF}
- Classes, SysUtils, uRESTDWMemoryDataset, FmtBcd, DB, Variants, uRESTDWConsts,
- uRESTDWTools{$IFDEF FPC}, uRESTDWBasicTypes{$ENDIF};
+ FmtBcd, DB, Variants, Classes, SysUtils, uRESTDWBasicDbTypes,
+ {$IFDEF UNIDACMEM}
+ DADump, UniDump, VirtualTable, MemDS,
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ ZAbstractRODataset, ZAbstractDataset, ZMemTable, ZDataset,
+ {$ENDIF}
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 22} // Delphi 2010 pra cima
+ {$IFDEF RESTFDMEMTABLE}
+ FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
+ FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
+ FireDAC.Comp.DataSet, FireDAC.Comp.Client,
+ {$IFNDEF FPC}
+ {$IF CompilerVersion > 26} // Delphi XE6 pra cima
+ FireDAC.Stan.StorageBin,
+ {$IFEND}
+ {$ENDIF}
+ {$ENDIF}
+ {$IFEND}
+ {$ENDIF}
+ uRESTDWMemoryDataset,
+ uRESTDWConsts, uRESTDWTools, uRESTDWBasicTypes;
Type
TRESTDWStorageBin = Class(TRESTDWStorageBase)
@@ -44,20 +65,20 @@ interface
FFieldSize,
FFieldPrecision : Array of Integer;
FFieldTypes,
- FFieldAttrs : Array of Byte;
+ FFieldAttrs : TFieldAttrs;
FFieldExists : Array of Boolean;
Procedure SaveRecordToStream (ADataset : TDataset;
Var AStream : TStream);
Procedure LoadRecordFromStream (ADataset : TDataset;
AStream : TStream);
- Function SaveRecordDWMemToStream (Dataset : IRESTDWMemTable;
+ Function SaveRecordDWMemToStream (Dataset : TRESTDWMemTable;
stream : TStream) : Longint;
- Procedure LoadRecordDWMemFromStream(Dataset : IRESTDWMemTable;
+ Procedure LoadRecordDWMemFromStream(Dataset : TRESTDWMemTable;
Stream : TStream);
Public
- Procedure SaveDWMemToStream (IDataset : IRESTDWMemTable;
+ Procedure SaveDWMemToStream (IDataset : TDataset;
Var AStream : TStream); Override;
- Procedure LoadDWMemFromStream (IDataset : IRESTDWMemTable;
+ Procedure LoadDWMemFromStream (IDataset : TDataset;
AStream : TStream); Override;
Procedure SaveDatasetToStream (ADataset : TDataset;
Var AStream : TStream); Override;
@@ -236,7 +257,7 @@ interface
End;
End;
-Procedure TRESTDWStorageBin.LoadDWMemFromStream(IDataset : IRESTDWMemTable;
+Procedure TRESTDWStorageBin.LoadDWMemFromStream(IDataset : TDataset;
AStream : TStream);
Procedure CreateFieldDefs(DataSet : TDataSet;
Index : Integer);
@@ -300,7 +321,18 @@ interface
End;
End;
Var
- ADataSet : TRESTDWMemTable;
+ ADataSet : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
I,
vFieldsCount : DWInteger;
vFieldSize,
@@ -315,7 +347,18 @@ interface
vFieldDef : TFieldDef;
vField : TField;
Begin
- ADataSet := TRESTDWMemTable(IDataset.GetDataset);
+ ADataSet := {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}(IDataset);
// field count
AStream.Position := 0;
AStream.Read(vFieldsCount, SizeOf(vFieldsCount));
@@ -332,9 +375,7 @@ interface
vNoFields := (ADataSet.Fields.Count = 0);
ADataSet.Close;
If vNoFields Then
- begin
ADataSet.FieldDefs.Clear;
- end;
For I := 0 To vFieldsCount-1 Do
Begin
// field kind
@@ -347,7 +388,7 @@ interface
FFieldNames[I] := vFieldName;
// field type
AStream.Read(vFieldType, SizeOf(vFieldType));
- If vFieldType in [{$IFDEF FPC}45, {$ENDIF}dwftExtended] Then
+ If vFieldType in [Integer(ftFloat), {$IFDEF FPC}45, {$ENDIF}dwftExtended] Then
FFieldTypes[I] := {$IFDEF FPC}Integer(ftFMTBcd){$ELSE}Integer(ftExtended){$ENDIF}
Else
FFieldTypes[I] := vFieldType;
@@ -382,6 +423,9 @@ interface
FFieldExists[I] := (ADataSet.FindField(FFieldNames[I]) <> nil); // or (vNoFields);
// create fieldsDefs like fields persistent
// If ((vNoFields) Or (Not FFieldExists[I])) Then
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemTable(ADataSet).FieldAttrs := FFieldAttrs;
+ {$ENDIF}
CreateFieldDefs(ADataSet, I);
End;
ADataSet.Open;
@@ -413,7 +457,7 @@ interface
End;
ADataSet.DisableControls;
Try
- LoadRecordDWMemFromStream(IDataset, AStream);
+ LoadRecordDWMemFromStream(TRESTDWMemtable(IDataset), AStream);
Finally
ADataSet.EnableControls;
AStream := Nil;
@@ -421,7 +465,7 @@ interface
End;
End;
-Procedure TRESTDWStorageBin.LoadRecordDWMemFromStream(Dataset : IRESTDWMemTable;
+Procedure TRESTDWStorageBin.LoadRecordDWMemFromStream(Dataset : TRESTDWMemTable;
stream : TStream);
Var
I, B,
@@ -430,7 +474,18 @@ interface
vVarBytes : TRESTDWBytes;
aField : TField;
aIndex : Integer;
- vDataset : TRESTDWMemTable;
+ vDataset : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
vActualRecord : TRESTDWMTMemoryRecord;
vDataType : TFieldType;
vDWFieldType : Byte;
@@ -473,17 +528,17 @@ interface
If (vDWFieldType In [dwftFixedWideChar,
dwftWideString,
dwftFixedChar,
- dwftString,
- dwftOraClob,
- dwftWideMemo,
- dwftFmtMemo,
- dwftMemo]) Then
+ dwftString]) Then
+// dwftOraClob,
+// dwftWideMemo,
+// dwftFmtMemo,
+// dwftMemo]) Then
Begin
- vLength := Dataset.GetCalcFieldLen(aField.DataType, aField.Size);
+ vLength := TRESTDWMemtable(Dataset).GetCalcFieldLen(aField.DataType, aField.Size);
{$IFDEF FPC}
- FillChar(PData^, vLength -1, #0);
+ FillChar(PData^, vLength, #0);
{$ELSE}
- FillChar(pData^, vLength -1, 0);
+ FillChar(pData^, vLength, 0);
{$ENDIF}
End
Else If (vDWFieldType In [dwftLongWord,
@@ -529,26 +584,37 @@ interface
End;
Begin
pActualRecord := Nil;
- vDataset := TRESTDWMemTable(Dataset.GetDataset);
+ vDataset := {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}(Dataset);
stream.Read(vRecCount, SizeOf(vRecCount));
vRecCount := vRecCount - 1;
vFieldCount := Length(FFieldNames);
vFieldCount := vFieldCount - 1;
For i := 0 To vRecCount Do
Begin
- pActualRecord := PRESTDWMTMemBuffer(Dataset.AllocRecordBuffer);
+ pActualRecord := PRESTDWMTMemBuffer(TRESTDWMemtable(vDataset).AllocRecordBuffer);
{$IFDEF RESTDWANDROID}
- Dataset.InternalAddRecord(nativeint(pActualRecord), True);
+ TRESTDWMemtable(vDataset).InternalAddRecord(nativeint(pActualRecord), True);
{$ELSE}
- Dataset.InternalAddRecord(pActualRecord, True);
+ TRESTDWMemtable(vDataset).InternalAddRecord(pActualRecord, True);
{$ENDIF}
- vActualRecord := Dataset.GetMemoryRecord(i);
+ vActualRecord := TRESTDWMemtable(vDataset).GetMemoryRecord(i);
For b := 0 To vFieldCount Do
Begin
- vBoolean := False;
+ vBoolean := False;
stream.Read(vBoolean, SizeOf(boolean));
SetLength(vVarBytes, 0);
- aField := vDataset.FindField(FFieldNames[b]);
+ aField := vDataset.FindField(FFieldNames[b]);
If aField <> Nil Then
Begin
aIndex := aField.FieldNo - 1;
@@ -572,9 +638,12 @@ interface
pData := Pointer(pActualRecord + Dataset.GetOffSets(aField));
End;
End;
- tratarNulos;
- If Not vBoolean Then
- Continue;
+ If vDWFieldType <> dwftBoolean Then
+ Begin
+ tratarNulos;
+ If Not vBoolean Then
+ Continue;
+ End;
If (pData <> Nil) Or (aField = Nil) Then
Begin
// N Bytes - WideString
@@ -610,43 +679,49 @@ interface
dwftVarBytes,
dwftFixedChar,
dwftString : Begin
+ SetLength(vString, 0);
stream.Read(vInt64, SizeOf(vInt64));
vString := '';
If vInt64 > 0 Then
Begin
SetLength(vString, vInt64);
+// FillChar(Pointer(@vString)^, vInt64, 0);
{$IFDEF FPC}
stream.Read(Pointer(vString)^, vInt64);
If EncodeStrs Then
vString := DecodeStrings(vString, Dataset.GetDatabaseCharSet);
vString := GetStringEncode(vString, Dataset.GetDatabaseCharSet);
If aField <> Nil Then
- Move(Pointer(vString)^, pData^, Length(vString));
+ Move(Pointer(vString)^, pData^, vInt64);
{$ELSE}
stream.Read(vString[InitStrPos], vInt64);
If EncodeStrs Then
vString := DecodeStrings(vString);
If aField <> Nil Then
- Move(vString[InitStrPos], pData^, Length(vString));
+ Begin
+// FillChar(pData^, vInt64, 0);
+ Move(Pointer(vString)^, pData^, vInt64);
+ End;
{$ENDIF}
End;
End;
// 1 - Byte - Inteiro
dwftByte,
dwftShortint :Begin
- stream.Read(vByte, SizeOf(vByte));
- If aField <> Nil Then
- Move(vByte, PData^, Sizeof(vByte));
+ stream.Read(vByte, SizeOf(vByte));
+ If aField <> Nil Then
+ Move(vByte, PData^, Sizeof(vByte));
End;
// 1 - Byte - Boolean
dwftBoolean :Begin
setlength(vVarBytes, 0);
- setlength(vVarBytes, 2);
+ setlength(vVarBytes, Sizeof(Boolean));
+// Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
+// stream.Read(vBoolean, SizeOf(vBoolean));
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
- stream.Read(vBoolean, SizeOf(vBoolean));
- Move(vBoolean, vVarBytes[1], Sizeof(Boolean));
+// Move(vBoolean, vVarBytes[1], Sizeof(Boolean));
If aField <> Nil Then
- Move(vVarBytes[0], PData^, Sizeof(vBoolean) + Sizeof(vBoolean));
+ Move(vVarBytes[0], PData^, Sizeof(vBoolean));
End;
// 2 - Bytes
dwftSmallint,
@@ -717,14 +792,16 @@ interface
, dwftExtended
:Begin
+ vDouble := 0;
stream.Read(vDouble, SizeOf(vDouble));
If aField <> Nil Then
Begin
- SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vDouble));
+ SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vExtended));
//Move Null para Bytes
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
//Move Bytes do Dado para Bytes
- Move(vDouble, vVarBytes[1], Sizeof(vDouble));
+ vExtended := vDouble;
+ Move(vExtended, vVarBytes[1], Sizeof(vExtended));
//Move Bytes para Buffer
Move(vVarBytes[0], PData^, Length(vVarBytes));
End;
@@ -772,7 +849,9 @@ interface
dwftTimeStampOffset :Begin
{$IF (NOT DEFINED(FPC)) AND (CompilerVersion >= 21)}
stream.Read(vDouble, SizeOf(vDouble));
- vTimeStampOffSet := DateTimeToSQLTimeStampOffset(vDouble);
+ {$IFDEF RESTDWMEMTABLE}
+ vTimeStampOffSet := DateTimeToSQLTimeStampOffset(vDouble);
+ {$ENDIF}
stream.Read(vByte, SizeOf(vByte));
vTimeStampOffSet.TimeZoneHour := vByte - 12;
stream.Read(vByte, SizeOf(vByte));
@@ -876,33 +955,34 @@ interface
dwftWideMemo,
dwftFmtMemo,
dwftOraClob,
- dwftMemo :Begin
- stream.Read(vInt64, SizeOf(vInt64));
- vString := '';
- If vInt64 > 0 Then
- Begin
- SetLength(vString, vInt64);
- {$IFDEF FPC}
- stream.Read(Pointer(vString)^, vInt64);
- If EncodeStrs Then
- vString := DecodeStrings(vString, csUndefined);
- vString := GetStringEncode(vString, csUndefined);
- {$ELSE}
- stream.Read(vString[InitStrPos], vInt64);
- If EncodeStrs Then
- vString := DecodeStrings(vString);
- {$ENDIF}
- vInt64 := Length(vString) + 1;
- Try
- SetLength(vBytes, vInt64);
- Move(vString[InitStrPos], vBytes[0], vInt64);
- If aField <> Nil Then
- PRESTDWBytes(pData)^ := vBytes;
- Finally
- SetLength(vBytes, 0);
- End;
- End;
- End;
+ dwftMemo,
+// dwftMemo :Begin
+// stream.Read(vInt64, SizeOf(vInt64));
+// vString := '';
+// If vInt64 > 0 Then
+// Begin
+// SetLength(vString, vInt64);
+// {$IFDEF FPC}
+// stream.Read(Pointer(vString)^, vInt64);
+// If EncodeStrs Then
+// vString := DecodeStrings(vString, csUndefined);
+// vString := GetStringEncode(vString, csUndefined);
+// {$ELSE}
+// stream.Read(vString[InitStrPos], vInt64);
+// If EncodeStrs Then
+// vString := DecodeStrings(vString);
+// {$ENDIF}
+// vInt64 := Length(vString) + 1;
+// Try
+// SetLength(vBytes, vInt64);
+// Move(vString[InitStrPos], vBytes[0], vInt64);
+// If aField <> Nil Then
+// PRESTDWBytes(pData)^ := vBytes;
+// Finally
+// SetLength(vBytes, 0);
+// End;
+// End;
+// End;
// N Bytes - Others Blobs
dwftStream,
dwftOraBlob,
@@ -958,7 +1038,8 @@ interface
Try
Dataset.SetMemoryRecordData(pActualRecord, i);
Finally
- Dispose(pActualRecord);//FreeMem(PRESTDWMTMemBuffer(@PActualRecord));
+ Reallocmem(pActualRecord, 0);
+// Dispose(pActualRecord);//FreeMem(PRESTDWMTMemBuffer(@PActualRecord));
End;
End;
End;
@@ -988,8 +1069,11 @@ interface
vField := ADataset.Fields[i];
vField.Clear;
AStream.Read(vBoolean, Sizeof(Byte));
- If Not vBoolean Then // is null
- Continue;
+ If FFieldTypes[i] <> dwftBoolean Then
+ Begin
+ If Not vBoolean Then
+ Continue;
+ End;
// N - Bytes
If (FFieldTypes[i] In [dwftFixedChar,
dwftWideString,
@@ -1088,14 +1172,18 @@ interface
// + TimeZone - 2 Bytes
Else If (FFieldTypes[i] In [dwftTimeStampOffset]) Then
Begin
- {$IFDEF DELPHIXEUP}
- AStream.Read(vDouble, Sizeof(vDouble));
- vTimeStampOffset := DateTimeToSQLTimeStampOffset(vDouble);
+ {$IFDEF DELPHIXEUP}
+ AStream.Read(vDouble, Sizeof(vDouble));
+ {$IFDEF RESTDWMEMTABLE}
+ vTimeStampOffset := DateTimeToSQLTimeStampOffset(vDouble);
+ {$ENDIF}
AStream.Read(vByte, Sizeof(vByte));
vTimeStampOffset.TimeZoneHour := vByte - 12;
AStream.Read(vByte, Sizeof(vByte));
vTimeStampOffset.TimeZoneMinute := vByte;
- vField.AsSQLTimeStampOffset := vTimeStampOffset;
+ {$IFDEF RESTDWMEMTABLE}
+ vField.AsSQLTimeStampOffset := vTimeStampOffset;
+ {$ENDIF}
{$ELSE}
// field foi transformado em datetime
AStream.Read(vDouble, Sizeof(vDouble));
@@ -1268,10 +1356,21 @@ interface
AStream.Position := 0;
End;
-Procedure TRESTDWStorageBin.SaveDWMemToStream(IDataset : IRESTDWMemTable;
+Procedure TRESTDWStorageBin.SaveDWMemToStream(IDataset : TDataset;
Var AStream : TStream);
Var
- ADataset : TRESTDWMemTable;
+ ADataset : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
I : DWInteger;
vRecordCount : DWInt64;
vString : DWString;
@@ -1280,7 +1379,18 @@ interface
vByte : Byte;
vBookMark : TBookmark;
Begin
- ADataSet := TRESTDWMemTable(IDataset.GetDataset);
+ ADataSet := {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}(IDataset);
AStream.Size := 0;
If not ADataset.Active Then
ADataset.Open
@@ -1345,17 +1455,28 @@ interface
// marcando position recordcount = 0
vRecordCount := 0;
AStream.WriteBuffer(vRecordCount, SizeOf(vRecordCount));
- vRecordCount := SaveRecordDWMemToStream(IDataSet,AStream);
+ vRecordCount := SaveRecordDWMemToStream(TRESTDWMemtable(IDataSet), AStream);
// salvando novo valor de recordcount
AStream.Position := i;
AStream.WriteBuffer(vRecordCount, SizeOf(vRecordCount));
AStream.Position := 0;
End;
-Function TRESTDWStorageBin.SaveRecordDWMemToStream(Dataset : IRESTDWMemTable;
+Function TRESTDWStorageBin.SaveRecordDWMemToStream(Dataset : TRESTDWMemTable;
stream : TStream) : Longint;
Var
- vDataSet : TRESTDWMemTable;
+ vDataSet : {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF};
I, B, aIndex : DWInteger;
vActualRecord : TRESTDWMTMemoryRecord;
PActualRecord : PRESTDWMTMemBuffer;
@@ -1384,13 +1505,26 @@ interface
{$IFEND}
{$ENDIF}
Begin
- vDataSet := TRESTDWMemTable(dataset.GetDataset);
+ vDataSet := {$IFDEF UNIDACMEM}
+ TVirtualTable
+ {$ENDIF}
+ {$IFDEF ZEOSMEM}
+ TZMemTable
+ {$ENDIF}
+ {$IFDEF RESTFDMEMTABLE}
+ TFDMemtable
+ {$ENDIF}
+ {$IFDEF RESTDWMEMTABLE}
+ TRESTDWMemtable
+ {$ENDIF}(dataset);
vFieldCount := vDataSet.Fields.Count - 1;
- Result := dataset.GetRecordCount - 1;
+ Result := TRESTDWMemtable(DataSet).GetRecordCount - 1;
For I := 0 To Result Do
Begin
vActualRecord := Dataset.GetMemoryRecord(I);
- pActualRecord := PRESTDWMTMemBuffer(vActualRecord.Data);
+ {$IFDEF RESTDWMEMTABLE}
+ pActualRecord := PRESTDWMTMemBuffer(vActualRecord.Data);
+ {$ENDIF}
vBoolean := False;
For B := 0 To vFieldCount Do
Begin
@@ -1398,25 +1532,30 @@ interface
If (aIndex >= 0) And (PActualRecord <> Nil) Then
Begin
vDataType := vDataSet.FieldDefs[aIndex].DataType;
- {$IFNDEF FPC}
- {$IF compilerversion < 21}
- vBoolean := vDataSet.Fields[B].Size > 0;
- {$ELSE}
- vBoolean := vDataSet.Fields[B].IsNull;
- {$IFEND}
- {$ELSE}
- vBoolean := vDataSet.Fields[B].IsNull;
- {$ENDIF}
- vBoolean := Not vBoolean;
- Stream.Write(vBoolean, SizeOf(boolean));
- If Not vBoolean Then
- Continue;
+ If vDataType <> ftBoolean Then
+ Begin
+ {$IFNDEF FPC}
+ {$IF compilerversion < 21}
+ vBoolean := vDataSet.Fields[B].Size > 0;
+ {$ELSE}
+ vBoolean := vDataSet.Fields[B].IsNull;
+ {$IFEND}
+ {$ELSE}
+ vBoolean := vDataSet.Fields[B].IsNull;
+ {$ENDIF}
+ vBoolean := Not vBoolean;
+ Stream.Write(vBoolean, SizeOf(boolean));
+ If Not vBoolean Then
+ Continue;
+ End;
If Dataset.DataTypeSuported(vDataType) Then
Begin
- If Dataset.DataTypeIsBlobTypes(vDataType) Then
- PData := Pointer(@PMemBlobArray(PActualRecord + Dataset.GetOffSetsBlobs)^[vDataSet.Fields[B].Offset])
- Else
- PData := Pointer(PActualRecord + dataset.GetOffSets(vDataSet.Fields[B]));
+ {$IFDEF RESTDWMEMTABLE}
+ If Dataset.DataTypeIsBlobTypes(vDataType) Then
+ PData := Pointer(@PMemBlobArray(PActualRecord + TRESTDWMemtable(DataSet).GetOffSetsBlobs)^[vDataSet.Fields[B].Offset])
+ Else
+ PData := Pointer(PActualRecord + dataset.GetOffSets(vDataSet.Fields[B]));
+ {$ENDIF}
End;
vDWFieldType := FieldTypeToDWFieldType(vDataType);
// N Bytes
@@ -1526,7 +1665,9 @@ interface
// + TimeZone - 2 Bytes
dwftTimeStampOffset : Begin
Move(PData^, vTimeStampOffSet, Sizeof(vTimeStampOffSet));
- vDouble := SQLTimeStampOffsetToDateTime(vTimeStampOffSet);
+ {$IFDEF RESTDWMEMTABLE}
+ vDouble := SQLTimeStampOffsetToDateTime(vTimeStampOffSet);
+ {$ENDIF}
Stream.Write(vDouble, Sizeof(vDouble));
vByte := vTimeStampOffSet.TimeZoneHour + 12;
Stream.Write(vByte, Sizeof(vByte));
@@ -1541,8 +1682,8 @@ interface
Stream.Write(vCurrency, Sizeof(vCurrency));
End;
dwftExtended : Begin
- Move(PData^, vExtended, Sizeof(vExtended));
- Stream.Write(vExtended, Sizeof(vExtended));
+ Move(PData^, vDouble, Sizeof(vDouble));
+ Stream.Write(vDouble, Sizeof(vDouble));
End;
// 8 - Bytes - Currency
dwftBCD : Begin
@@ -1655,11 +1796,15 @@ interface
vMemoryStream := nil;
For i := 0 To ADataset.FieldCount - 1 Do
Begin
- vBoolean := ADataset.Fields[i].IsNull;
- vBoolean := Not vBoolean;
- AStream.Write(vBoolean, SizeOf(boolean));
- If Not vBoolean Then
- Continue;
+ vBoolean := True;
+ If ADataset.Fields[i].DataType <> ftBoolean Then
+ Begin
+ vBoolean := ADataset.Fields[i].IsNull;
+ vBoolean := Not vBoolean;
+ AStream.Write(vBoolean, SizeOf(boolean));
+ If Not vBoolean Then
+ Continue;
+ End;
vDWFieldType := FieldTypeToDWFieldType(ADataset.Fields[i].DataType);
// N - Bytes
Case vDWFieldType Of
@@ -1741,8 +1886,8 @@ interface
End;
{$IFNDEF FPC}
dwftExtended : Begin
- vExtended := ADataset.Fields[i]{$IFNDEF FPC}.AsExtended{$ELSE}.AsFloat{$ENDIF};
- AStream.Write(vExtended, Sizeof(vExtended));
+ vDouble := ADataset.Fields[i]{$IFNDEF FPC}.AsExtended{$ELSE}.AsFloat{$ENDIF};
+ AStream.Write(vDouble, Sizeof(vDouble));
End;
{$ENDIF}
// 8 - Bytes - Date, Time, DateTime, TimeStamp
@@ -1757,8 +1902,10 @@ interface
// TimeStampOffSet To Double - 8 Bytes
// + TimeZone - 2 Bytes
dwftTimeStampOffset : Begin
- vTimeStampOffSet := ADataset.Fields[i].AsSQLTimeStampOffset;
- vDouble := SQLTimeStampOffsetToDateTime(vTimeStampOffSet);
+ {$IFDEF RESTDWMEMTABLE}
+ vTimeStampOffSet := ADataset.Fields[i].AsSQLTimeStampOffset;
+ vDouble := SQLTimeStampOffsetToDateTime(vTimeStampOffSet);
+ {$ENDIF}
AStream.Write(vDouble, Sizeof(vDouble));
vByte := vTimeStampOffSet.TimeZoneHour + 12;
AStream.Write(vByte, Sizeof(vByte));
@@ -1797,12 +1944,15 @@ interface
vInt64 := vMemoryStream.Size;
AStream.Write(vInt64, SizeOf(vInt64));
SetLength(vBytes, vInt64);
- Try
- vMemoryStream.Position := 0;
- vMemoryStream.Read(vBytes[0], vInt64);
- Except
- End;
- AStream.Write(vBytes[0], vInt64);
+ if vInt64 > 0 then
+ begin
+ Try
+ vMemoryStream.Position := 0;
+ vMemoryStream.Read(vBytes[0], vInt64);
+ Except
+ End;
+ AStream.Write(vBytes[0], vInt64);
+ end;
Finally
SetLength(vBytes, 0);
FreeAndNil(vMemoryStream);
diff --git a/CORE/Source/Consts/uRESTDWConsts.pas b/CORE/Source/Consts/uRESTDWConsts.pas
index 6d9ac880..28af857d 100644
--- a/CORE/Source/Consts/uRESTDWConsts.pas
+++ b/CORE/Source/Consts/uRESTDWConsts.pas
@@ -60,8 +60,8 @@
// controle de versão
RESTDWVersionINFO = 'v2.1.0-';
- RESTDWRelease = '3974';
- RESTDWCodeProject = 'Final Fantasy X - GitHub';
+ RESTDWRelease = '3975';
+ RESTDWCodeProject = 'Final Fantasy X - SourceForge';
RESTDWVersao = RESTDWVersionINFO + RESTDWRelease + '(' + RESTDWCodeProject + ')';
RESTDWDialogoTitulo = 'REST DataWare Components ' + RESTDWVersao;
RESTDWSobreTitulo = 'REST DataWare '+ RESTDWVersao;
@@ -293,8 +293,9 @@
TRESTDWJSONTypes = Set of TRESTDWJSONType;
TRESTDWMaxLineAction = (maException, maSplit);
TRESTDWOSType = (otUnknown, otUnix, otWindows, otDotNet);
- TRESTDWSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2);
+ TRESTDWSSLVersion = (SSLv2, SSLv23, SSLv3, TLSv1, TLSv1_1, TLSv1_2, TLSv1_3);
TRESTDWSSLVersions = set of TRESTDWSSLVersion;
+ TRESTDWSSLMode = (sslUnassigned, sslClient, sslServer, sslBoth);
TTypeObject = (toDataset, toParam, toMassive, toVariable, toObject);
TCaseType = (ctNone, ctUpperCase, ctLowerCase, ctCamelCase);
TRESTDWRouteData = (crAll, crGet, crPost, crPut, crPatch, crDelete, crOption);
diff --git a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDW.pas b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDW.pas
index 8b737617..d60e760e 100644
--- a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDW.pas
+++ b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDW.pas
@@ -33,7 +33,7 @@ interface
FireDAC.Phys.RESTDWBase;
type
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
[ComponentPlatformsAttribute(pfidWindows or pfidOSX or pfidLinux)]
{$ENDIF}
TRESTDWFireDACPhysLink = class(TFDPhysRDWBaseDriverLink)
@@ -100,13 +100,13 @@ function TFDPhysRDWDriver.GetConnParams(AKeys: TStrings; AParams: TFDDatSTable):
{-------------------------------------------------------------------------------}
initialization
- {$IFDEF DELPHI10_2UP}
+ {$IFDEF DELPHI11UP}
FDRegisterDriverClass(TFDPhysRDWDriver);
{$ELSE}
FDPhysManager().RegisterDriverClass(TFDPhysRDWDriver);
{$ENDIF}
finalization
- {$IFDEF DELPHI10_2UP}
+ {$IFDEF DELPHI11UP}
FDUnregisterDriverClass(TFDPhysRDWDriver);
{$ENDIF}
diff --git a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas
index 07da2a77..2ddb710f 100644
--- a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas
+++ b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas
@@ -120,7 +120,7 @@ TFDPhysRDWCommand = class(TFDPhysCommand)
protected
procedure InternalPrepare; override;
procedure InternalUnprepare; override;
- function InternalOpen{$IFDEF DELPHI10_3UP}(var ACount: TFDCounter){$ENDIF}: Boolean; override;
+ function InternalOpen{$IFDEF DELPHI11UP}(var ACount: TFDCounter){$ENDIF}: Boolean; override;
function InternalNextRecordSet: Boolean; override;
procedure InternalClose; override;
procedure InternalExecute(ATimes, AOffset: integer;
@@ -537,16 +537,16 @@ function TFDPhysRDWCommand.InternalNextRecordSet: Boolean;
Result := False;
end;
-function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI10_3UP}(var ACount: TFDCounter){$ENDIF}: Boolean;
+function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI11UP}(var ACount: TFDCounter){$ENDIF}: Boolean;
begin
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
ACount := -1;
{$ENDIF}
Result := False;
case GetMetaInfoKind of
mkNone:
begin
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
ACount := RDWExecuteComand;
Result := ACount >= 0;
{$ELSE}
@@ -555,7 +555,7 @@ function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI10_3UP}(var ACount: TFDCoun
end;
mkTables:
begin
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
ACount := RDWGetTables;
Result := ACount >= 0;
{$ELSE}
@@ -566,7 +566,7 @@ function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI10_3UP}(var ACount: TFDCoun
end;
mkPrimaryKeyFields:
begin
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
ACount := RDWGetPKTablesFields(GetBaseObjectName);
Result := ACount >= 0;
{$ELSE}
@@ -577,7 +577,7 @@ function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI10_3UP}(var ACount: TFDCoun
end;
mkTableFields:
begin
- {$IFDEF DELPHI10_3UP}
+ {$IFDEF DELPHI11UP}
ACount := RDWGetTablesFields(GetBaseObjectName);
Result := ACount >= 0;
{$ELSE}
diff --git a/CORE/Source/Database_Drivers/uRESTDWAnyDACDriver.pas b/CORE/Source/Database_Drivers/uRESTDWAnyDACDriver.pas
index bcf6f378..a1f6bc67 100644
--- a/CORE/Source/Database_Drivers/uRESTDWAnyDACDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWAnyDACDriver.pas
@@ -87,7 +87,7 @@ TRESTDWAnyDACQuery = class(TRESTDWDrvQuery)
TRESTDWAnyDACDriver = class(TRESTDWDriverBase)
protected
Function compConnIsValid(comp : TComponent) : boolean; override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
public
function getQuery : TRESTDWDrvQuery; override;
function getQuery(AUnidir : boolean) : TRESTDWDrvQuery; override;
@@ -138,12 +138,12 @@ procedure TRESTDWAnyDACStoreProc.Prepare;
{ TRESTDWAnyDACDriver }
-function TRESTDWAnyDACDriver.getConectionType : TRESTDWDatabaseType;
+function TRESTDWAnyDACDriver.getConnectionType : TRESTDWDatabaseType;
var
conn : string;
i: integer;
begin
- Result:=inherited getConectionType;
+ Result:=inherited getConnectionType;
if not Assigned(Connection) then
Exit;
diff --git a/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas b/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
index 87987b1e..a70fb8ad 100644
--- a/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
@@ -31,9 +31,12 @@
Uses
Classes, SysUtils, TypInfo, DB, Variants, StrUtils,
- uRESTDWMemoryDataset, uRESTDWParams, uRESTDWAbout, uRESTDWComponentEvents,
+ {$IFDEF RESTDWMEMTABLE}
+ uRESTDWMemoryDataset,
+ {$ENDIF}
+ uRESTDWParams, uRESTDWAbout, uRESTDWComponentEvents,
uRESTDWJSONInterface, uRESTDWBufferBase, uRESTDWConsts, uRESTDWDatamodule,
- uRESTDWBasicTypes, uRESTDWProtoTypes, uRESTDWTools, uRESTDWStorageBin,
+ uRESTDWBasicTypes, uRESTDWBasicDbTypes, uRESTDWProtoTypes, uRESTDWTools, uRESTDWStorageBin,
uRESTDWMassiveBuffer;
Type
@@ -261,8 +264,8 @@ TRDWDrvParam = class(TObject)
destructor Destroy; override;
Function compConnIsValid (comp : TComponent) : Boolean;Virtual;
- Function getConectionType : TRESTDWDatabaseType; Virtual;
- Procedure setConectionType(aValue : TRESTDWDatabaseType); Virtual;
+ Function getConnectionType : TRESTDWDatabaseType; Virtual;
+ Procedure setConnectionType(aValue : TRESTDWDatabaseType); Virtual;
Function getDatabaseInfo : TRESTDWDatabaseInfo; Virtual;
Function getQuery : TRESTDWDrvQuery; Overload; Virtual;
Function getQuery (AUnidir : Boolean) : TRESTDWDrvQuery; Overload; Virtual;
@@ -403,7 +406,7 @@ TRDWDrvParam = class(TObject)
Property StorageDataType : TRESTDWStorageBase Read FStorageDataType Write FStorageDataType;
Published
Property Connection : TComponent Read FConnection Write setConnection;
- Property ConectionType : TRESTDWDatabaseType Read getConectionType Write setConectionType;
+ Property ConnectionType : TRESTDWDatabaseType Read getConnectionType Write setConnectionType;
Property StrsTrim : Boolean Read vStrsTrim Write vStrsTrim;
Property StrsEmpty2Null : Boolean Read vStrsEmpty2Null Write vStrsEmpty2Null;
Property StrsTrim2Len : Boolean Read vStrsTrim2Len Write vStrsTrim2Len;
@@ -428,6 +431,13 @@ TRDWDrvParam = class(TObject)
{ TRESTDWDrvStoreProc }
+Function FixFieldName(FieldName : String) : String;
+Begin
+ Result := FieldName;
+ If Pos('_', Result) > 0 Then
+ Result := Format('"%s"', [Result]);
+End;
+
Function TRESTDWDrvStoreProc.getStoredProcName : String;
Begin
Try
@@ -927,7 +937,7 @@ function TRESTDWDrvDataset.getParamDataType(IParam: integer): TFieldType;
Result := -1;
drv := TRESTDWDriverBase(Self.Owner);
Try
- If drv.getConectionType = dbtMySQL Then
+ If drv.getConnectionType = dbtMySQL Then
Begin
Close;
SQL.Clear;
@@ -946,12 +956,12 @@ function TRESTDWDrvDataset.getParamDataType(IParam: integer): TFieldType;
{ TRESTDWDriverBase }
-Procedure TRESTDWDriverBase.setConectionType(aValue : TRESTDWDatabaseType);
+Procedure TRESTDWDriverBase.setConnectionType(aValue : TRESTDWDatabaseType);
Begin
vDatabaseType := aValue;
End;
-function TRESTDWDriverBase.getConectionType : TRESTDWDatabaseType;
+function TRESTDWDriverBase.getConnectionType : TRESTDWDatabaseType;
Begin
Result := vDatabaseType;// : TRESTDWDatabaseType;
// Result := dbtUndefined;
@@ -974,7 +984,7 @@ function TRESTDWDriverBase.getDatabaseInfo : TRESTDWDatabaseInfo;
// ex: no MySQL temos o MariaDB
// ex: no Firebird temos a versao HQBird
sVersion := '';
- connType := getConectionType;
+ connType := getConnectionType;
lst := TStringList.Create;
qry := getQuery;
Try
@@ -1456,7 +1466,7 @@ function TRESTDWDriverBase.GetGenID(Query : TRESTDWDrvQuery; GenName : String; v
connType : TRESTDWDatabaseType;
Begin
Result := -1;
- connType := getConectionType;
+ connType := getConnectionType;
With Query Do
Begin
Close;
@@ -1757,182 +1767,200 @@ function TRESTDWDriverBase.ApplyUpdates(MassiveDataset: TMassiveDatasetBuffer;
var Error: Boolean;
var MessageError: String;
var RowsAffected: Integer): TRESTDWJSONValue;
-var
- vTempQuery: TRESTDWDrvQuery;
- vResultReflection: string;
- vStateResource, vMassiveLine: boolean;
-
- function LoadMassive(var Query: TRESTDWDrvQuery): boolean;
- var
- A, B: integer;
- begin
- Result := False;
- try
- MassiveDataset.First;
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveBegin) then
- FServerMethod.OnMassiveBegin(MassiveDataset);
- end;
- B := 1;
- Result := True;
- for A := 1 to MassiveDataset.RecordCount do begin
- if not connInTransaction then begin
- connStartTransaction;
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveAfterStartTransaction) then
- FServerMethod.OnMassiveAfterStartTransaction(MassiveDataset);
- end;
- end;
- Query.SQL.Clear;
- if Assigned(FServerMethod) then begin
- vMassiveLine := False;
- if Assigned(FServerMethod.OnMassiveProcess) then begin
- FServerMethod.OnMassiveProcess(MassiveDataset,vMassiveLine);
- if vMassiveLine then begin
- MassiveDataset.Next;
- Continue;
- end;
- end;
- end;
- PrepareDataQuery(Query, MassiveDataset, Params, MassiveDataset.ReflectChanges, vResultReflection, Error, MessageError);
- try
- if (not (MassiveDataset.ReflectChanges)) or
- ((MassiveDataset.ReflectChanges) and
- (MassiveDataset.MassiveMode in [mmExec, mmDelete])) then
- Query.ExecSQL;
- except
- On E: Exception do begin
- Error := True;
- Result := False;
- MessageError := E.Message;
- if connInTransaction then
- connRollback;
- Exit;
- end;
- end;
-
- if B >= CommitRecords then begin
- try
- if connInTransaction then begin
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveAfterBeforeCommit) then
- FServerMethod.OnMassiveAfterBeforeCommit(MassiveDataset);
- end;
- connCommit;
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveAfterAfterCommit) then
- FServerMethod.OnMassiveAfterAfterCommit(MassiveDataset);
- end;
- end;
- except
- On E: Exception do begin
- Error := True;
- Result := False;
- MessageError := E.Message;
- if connInTransaction then
- connRollback;
- Break;
- end;
- end;
- B := 1;
- end
- else
- Inc(B);
- MassiveDataset.Next;
- end;
- try
- if connInTransaction then begin
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveAfterBeforeCommit) then
- FServerMethod.OnMassiveAfterBeforeCommit(MassiveDataset);
- end;
+Var
+ vTempQuery : TRESTDWDrvQuery;
+ vResultReflection : String;
+ vStateResource,
+ vMassiveLine : Boolean;
+ Function LoadMassive(var Query: TRESTDWDrvQuery): boolean;
+ Var
+ A, B: integer;
+ Begin
+ Result := False;
+ Try
+ MassiveDataset.First;
+ If Assigned(FServerMethod) then
+ Begin
+ If Assigned(FServerMethod.OnMassiveBegin) Then
+ FServerMethod.OnMassiveBegin(MassiveDataset);
+ End;
+ B := 1;
+ Result := True;
+ For A := 1 to MassiveDataset.RecordCount Do
+ Begin
+ If not connInTransaction Then
+ Begin
+ connStartTransaction;
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveAfterStartTransaction) Then
+ FServerMethod.OnMassiveAfterStartTransaction(MassiveDataset);
+ End;
+ End;
+ Query.SQL.Clear;
+ If Assigned(FServerMethod) Then
+ Begin
+ vMassiveLine := False;
+ If Assigned(FServerMethod.OnMassiveProcess) Then
+ Begin
+ FServerMethod.OnMassiveProcess(MassiveDataset,vMassiveLine);
+ If vMassiveLine Then
+ Begin
+ MassiveDataset.Next;
+ Continue;
+ End;
+ End;
+ End;
+ PrepareDataQuery(Query, MassiveDataset, Params, MassiveDataset.ReflectChanges, vResultReflection, Error, MessageError);
+ Try
+ If (Not(MassiveDataset.ReflectChanges)) Or
+ ((MassiveDataset.ReflectChanges) And
+ (MassiveDataset.MassiveMode In [mmExec, mmDelete])) Then
+ Query.ExecSQL;
+ Except
+ On E: Exception do
+ Begin
+ Error := True;
+ Result := False;
+ MessageError := E.Message;
+ If connInTransaction Then
+ connRollback;
+ Exit;
+ End;
+ End;
+ If B >= CommitRecords Then
+ Begin
+ Try
+ If connInTransaction Then
+ Begin
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveAfterBeforeCommit) Then
+ FServerMethod.OnMassiveAfterBeforeCommit(MassiveDataset);
+ End;
connCommit;
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveAfterAfterCommit) then
- FServerMethod.OnMassiveAfterAfterCommit(MassiveDataset);
- end;
- end;
- except
- On E: Exception do begin
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveAfterAfterCommit) Then
+ FServerMethod.OnMassiveAfterAfterCommit(MassiveDataset);
+ End;
+ End;
+ Except
+ On E: Exception Do
+ Begin
Error := True;
Result := False;
MessageError := E.Message;
- if connInTransaction then
- connRollback;
- end;
- end;
- finally
- if Assigned(FServerMethod) then begin
- if Assigned(FServerMethod.OnMassiveEnd) then
- FServerMethod.OnMassiveEnd(MassiveDataset);
- end;
- Query.SQL.Clear;
- end;
- end;
-begin
- {$IFNDEF RESTDWLAZARUS}inherited;{$ENDIF}
- try
- Result := nil;
- Error := False;
- vTempQuery := getQuery;
-
- vStateResource := isConnected;
- if not vStateResource then
- Connect;
-
- vTempQuery.SQL.Clear;
- vResultReflection := '';
- if LoadMassive(vTempQuery) then begin
- if (SQL <> '') and (vResultReflection = '') then begin
- try
- vTempQuery.SQL.Clear;
- vTempQuery.SQL.Add(SQL);
- vTempQuery.ImportParams(Params);
- vTempQuery.Open;
-
- if Result = nil then
- Result := TRESTDWJSONValue.Create;
- Result.Encoding := Encoding;
- Result.Encoded := EncodeStringsJSON;
- Result.Utf8SpecialChars := True;
- Result.LoadFromDataset('RESULTDATA', TDataSet(vTempQuery.Owner),EncodeStringsJSON);
- Error := False;
- if not vStateResource then
- Disconect;
- except
- On E: Exception do begin
- try
- Error := True;
- MessageError := E.Message;
- if Result = nil then
- Result := TRESTDWJSONValue.Create;
- Result.Encoded := True;
- Result.SetValue(GetPairJSONStr('NOK', MessageError));
- if connInTransaction then
- connRollback;
- except
+ If connInTransaction Then
+ connRollback;
+ Break;
+ End;
+ End;
+ B := 1;
+ End
+ Else
+ Inc(B);
+ MassiveDataset.Next;
+ End;
+ Try
+ If connInTransaction Then
+ Begin
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveAfterBeforeCommit) Then
+ FServerMethod.OnMassiveAfterBeforeCommit(MassiveDataset);
+ End;
+ connCommit;
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveAfterAfterCommit) Then
+ FServerMethod.OnMassiveAfterAfterCommit(MassiveDataset);
+ End;
+ End;
+ Except
+ On E: Exception Do
+ Begin
+ Error := True;
+ Result := False;
+ MessageError := E.Message;
+ If connInTransaction Then
+ connRollback;
+ End;
+ End;
+ Finally
+ If Assigned(FServerMethod) Then
+ Begin
+ If Assigned(FServerMethod.OnMassiveEnd) Then
+ FServerMethod.OnMassiveEnd(MassiveDataset);
+ End;
+ Query.SQL.Clear;
+ End;
+ End;
+Begin
+ {$IFNDEF RESTDWLAZARUS}Inherited;{$ENDIF}
+ Try
+ Result := nil;
+ Error := False;
+ vTempQuery := getQuery;
+ vStateResource := isConnected;
+ If Not vStateResource Then
+ Connect;
+ vTempQuery.SQL.Clear;
+ vResultReflection := '';
+ If LoadMassive(vTempQuery) Then
+ Begin
+ If (SQL <> '') And (vResultReflection = '') Then
+ Begin
+ Try
+ vTempQuery.SQL.Clear;
+ vTempQuery.SQL.Add(SQL);
+ vTempQuery.ImportParams(Params);
+ vTempQuery.Open;
+ If Result = Nil Then
+ Result := TRESTDWJSONValue.Create;
+ Result.Encoding := Encoding;
+ Result.Encoded := EncodeStringsJSON;
+ Result.Utf8SpecialChars := True;
+ Result.LoadFromDataset('RESULTDATA', TDataSet(vTempQuery.Owner),EncodeStringsJSON);
+ Error := False;
+ If Not vStateResource Then
+ Disconect;
+ Except
+ On E: Exception Do
+ Begin
+ Try
+ Error := True;
+ MessageError := E.Message;
+ If Result = Nil Then
+ Result := TRESTDWJSONValue.Create;
+ Result.Encoded := True;
+ Result.SetValue(GetPairJSONStr('NOK', MessageError));
+ If connInTransaction Then
+ connRollback;
+ Except
- end;
- Disconect;
- end;
- end;
- end
- else if (vResultReflection <> '') then begin
- if Result = nil then
- Result := TRESTDWJSONValue.Create;
- Result.Encoding := Encoding;
- Result.Encoded := EncodeStringsJSON;
- Result.SetValue('[' + vResultReflection + ']');
- Error := False;
- end;
- end;
- finally
- FreeAndNil(BufferBase);
- RowsAffected := vTempQuery.RowsAffected;
- vTempQuery.Close;
- FreeAndNil(vTempQuery);
- end;
-end;
+ End;
+ Disconect;
+ End;
+ End;
+ End
+ Else If (vResultReflection <> '') Then
+ Begin
+ If Result = Nil Then
+ Result := TRESTDWJSONValue.Create;
+ Result.Encoding := Encoding;
+ Result.Encoded := EncodeStringsJSON;
+ Result.SetValue('[' + vResultReflection + ']');
+ Error := False;
+ End;
+ End;
+ Finally
+ FreeAndNil(BufferBase);
+ RowsAffected := vTempQuery.RowsAffected;
+ vTempQuery.Close;
+ FreeAndNil(vTempQuery);
+ End;
+End;
function TRESTDWDriverBase.ApplyUpdatesTB(Massive : String; Params : TRESTDWParams; var Error : Boolean; var MessageError : String; var RowsAffected : Integer) : TRESTDWJSONValue;
var
@@ -2586,7 +2614,7 @@ function TRESTDWDriverBase.ExecuteCommand(
Error := False;
Result := '';
aResult := TRESTDWJSONValue.Create;
- vTempQuery := getQuery(not Execute);
+ vTempQuery := getQuery(Execute);
vDataSet := TDataSet(vTempQuery.Owner);
try
vStateResource := isConnected;
@@ -2865,7 +2893,7 @@ procedure TRESTDWDriverBase.GetTableNames(var TableNames : TStringList; var Erro
Delete(vTable, InitStrPos, Pos('.', vTable));
end;
}
- connType := getConectionType;
+ connType := getConnectionType;
Try
vStateResource := isConnected;
If Not vStateResource Then
@@ -2960,7 +2988,7 @@ procedure TRESTDWDriverBase.GetFieldNames(TableName : String; var FieldNames : T
vSchema := Copy(vTable, InitStrPos, Pos('.', vTable)-1);
Delete(vTable, InitStrPos, Pos('.', vTable));
End;
- connType := getConectionType;
+ connType := getConnectionType;
Try
vStateResource := isConnected;
If Not vStateResource Then
@@ -3057,7 +3085,7 @@ procedure TRESTDWDriverBase.GetKeyFieldNames(TableName : String; var FieldNames
vSchema := Copy(vTable, InitStrPos, Pos('.', vTable)-1);
Delete(vTable, InitStrPos, Pos('.', vTable));
End;
- connType := getConectionType;
+ connType := getConnectionType;
Try
vStateResource := isConnected;
If Not vStateResource Then
@@ -3212,7 +3240,7 @@ procedure TRESTDWDriverBase.GetProcNames(var ProcNames : TStringList; var Error
If Not Assigned(ProcNames) Then
ProcNames := TStringList.Create;
vSchema := '';
- connType := getConectionType;
+ connType := getConnectionType;
Try
vStateResource := isConnected;
If Not vStateResource Then
@@ -3499,7 +3527,7 @@ procedure TRESTDWDriverBase.GetProcParams(ProcName : String; var ParamNames : TS
vSchema := Copy(vProc, InitStrPos, Pos('.', vProc)-1);
Delete(vProc, InitStrPos, Pos('.', vProc));
End;
- connType := getConectionType;
+ connType := getConnectionType;
Try
vStateResource := isConnected;
If Not vStateResource Then
@@ -3924,7 +3952,6 @@ constructor TRESTDWDriverBase.Create(AOwner: TComponent);
vStrsTrim2Len := vParamCreate;
vEncodeStrings := vParamCreate;
vCompression := vParamCreate;
-
// fernando banhos 25/10/2022
// algumas rotinas de paramscreate foram retiradas devido
// incompatibilidade com outros drivers
@@ -3986,8 +4013,7 @@ procedure TRESTDWDriverBase.PrepareDataQuery(var Query: TRESTDWDrvQuery;
vLineSQL := Format('INSERT INTO %s ',[MassiveDataset.TableName + ' (%s) VALUES (%s)']);
for I := 0 to MassiveDataset.Fields.Count - 1 do begin
if ((((MassiveDataset.Fields.Items[I].AutoGenerateValue) and
- (MassiveDataset.AtualRec.MassiveMode = mmInsert) and
- (MassiveDataset.Fields.Items[I].ReadOnly)) or
+ (MassiveDataset.AtualRec.MassiveMode = mmInsert)) or
(MassiveDataset.Fields.Items[I].ReadOnly)) and
(not (MassiveDataset.ReflectChanges))) or
((MassiveDataset.ReflectChanges) and
@@ -3996,21 +4022,21 @@ procedure TRESTDWDriverBase.PrepareDataQuery(var Query: TRESTDWDrvQuery;
(Lowercase(MassiveDataset.Fields.Items[I].FieldName) = Lowercase(RESTDWFieldBookmark)))) then
Continue;
if vFields = '' then begin
- vFields := MassiveDataset.Fields.Items[I].FieldName;
+ vFields := FixFieldName(MassiveDataset.Fields.Items[I].FieldName);
if not MassiveDataset.ReflectChanges then
vParamsSQL := ':' + MassiveDataset.Fields.Items[I].FieldName;
end
else begin
- vFields := vFields + ', ' + MassiveDataset.Fields.Items[I].FieldName;
+ vFields := vFields + ', ' + FixFieldName(MassiveDataset.Fields.Items[I].FieldName);
if not MassiveDataset.ReflectChanges then
vParamsSQL := vParamsSQL + ', :' + MassiveDataset.Fields.Items[I].FieldName;
end;
if MassiveDataset.ReflectChanges then begin
if MassiveDataset.Fields.Items[I].KeyField then
if vParamsSQL = '' then
- vParamsSQL := MassiveDataset.Fields.Items[I].FieldName + ' is null '
+ vParamsSQL := FixFieldName(MassiveDataset.Fields.Items[I].FieldName) + ' is null '
else
- vParamsSQL := vParamsSQL + ' and ' + MassiveDataset.Fields.Items[I].FieldName + ' is null ';
+ vParamsSQL := vParamsSQL + ' and ' + FixFieldName(MassiveDataset.Fields.Items[I].FieldName) + ' is null ';
end;
end;
@@ -4035,9 +4061,9 @@ procedure TRESTDWDriverBase.PrepareDataQuery(var Query: TRESTDWDrvQuery;
for I := 0 to MassiveDataset.AtualRec.UpdateFieldChangesCount - 1 do begin
if Lowercase(MassiveDataset.AtualRec.UpdateFieldChanges[I]) <> Lowercase(RESTDWFieldBookmark) then begin
if vFields = '' then
- vFields := MassiveDataset.AtualRec.UpdateFieldChanges[I] + ' = :' + MassiveDataset.AtualRec.UpdateFieldChanges[I]
+ vFields := FixFieldName(MassiveDataset.AtualRec.UpdateFieldChanges[I]) + ' = :' + MassiveDataset.AtualRec.UpdateFieldChanges[I]
else
- vFields := vFields + ', ' + MassiveDataset.AtualRec.UpdateFieldChanges[I] + ' = :' + MassiveDataset.AtualRec.UpdateFieldChanges[I];
+ vFields := vFields + ', ' + FixFieldName(MassiveDataset.AtualRec.UpdateFieldChanges[I]) + ' = :' + MassiveDataset.AtualRec.UpdateFieldChanges[I];
end;
end;
end
@@ -4065,9 +4091,9 @@ procedure TRESTDWDriverBase.PrepareDataQuery(var Query: TRESTDWDrvQuery;
try
for I := 0 to bPrimaryKeys.Count - 1 do begin
if I = 0 then
- vParamsSQL := 'WHERE ' + bPrimaryKeys[I] + ' = :DWKEY_' + bPrimaryKeys[I]
+ vParamsSQL := 'WHERE ' + FixFieldName(bPrimaryKeys[I]) + ' = :DWKEY_' + bPrimaryKeys[I]
else
- vParamsSQL := vParamsSQL + ' AND ' + bPrimaryKeys[I] + ' = :DWKEY_' + bPrimaryKeys[I];
+ vParamsSQL := vParamsSQL + ' AND ' + FixFieldName(bPrimaryKeys[I]) + ' = :DWKEY_' + bPrimaryKeys[I];
end;
finally
FreeAndNil(bPrimaryKeys);
@@ -4080,9 +4106,9 @@ procedure TRESTDWDriverBase.PrepareDataQuery(var Query: TRESTDWDrvQuery;
try
for I := 0 to bPrimaryKeys.Count - 1 do begin
if I = 0 then
- vParamsSQL := 'WHERE ' + bPrimaryKeys[I] + ' = :' + bPrimaryKeys[I]
+ vParamsSQL := 'WHERE ' + FixFieldName(bPrimaryKeys[I]) + ' = :' + bPrimaryKeys[I]
else
- vParamsSQL := vParamsSQL + ' AND ' + bPrimaryKeys[I] + ' = :' + bPrimaryKeys[I];
+ vParamsSQL := vParamsSQL + ' AND ' + FixFieldName(bPrimaryKeys[I]) + ' = :' + bPrimaryKeys[I];
end;
finally
FreeAndNil(bPrimaryKeys);
diff --git a/CORE/Source/Database_Drivers/uRESTDWFireDACDriver.pas b/CORE/Source/Database_Drivers/uRESTDWFireDACDriver.pas
index 61e62e0d..6dba2ec3 100644
--- a/CORE/Source/Database_Drivers/uRESTDWFireDACDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWFireDACDriver.pas
@@ -26,7 +26,7 @@
interface
uses
- Classes, SysUtils, uRESTDWDriverBase, uRESTDWBasicTypes,
+ Classes, SysUtils, uRESTDWDriverBase, uRESTDWBasicdbTypes,
FireDAC.Comp.Client, FireDAC.Comp.DataSet, FireDAC.Stan.StorageBin,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.DApt.Intf, FireDAC.DApt,
FireDAC.Stan.Param, FireDAC.DatS, DB, uRESTDWBasicDB, uRESTDWProtoTypes,
@@ -94,7 +94,7 @@ TRESTDWFireDACDriver = class(TRESTDWDriverBase)
protected
public
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
function getQuery : TRESTDWDrvQuery; override;
function getQuery(AUnidir : boolean) : TRESTDWDrvQuery; override;
@@ -154,26 +154,28 @@ function TRESTDWFireDACDriver.isAutoCommit: boolean;
{$ENDIF}
end;
-function TRESTDWFireDACDriver.getConectionType: TRESTDWDatabaseType;
+function TRESTDWFireDACDriver.getConnectionType: TRESTDWDatabaseType;
var
conn : string;
i: integer;
begin
- Result:=inherited getConectionType;
+ Result := inherited getConnectionType;
if not Assigned(Connection) then
Exit;
-
- conn := LowerCase(TFDConnection(Connection).DriverName);
-
- i := 0;
- while i < Length(rdwFireDACDrivers) do begin
- if Pos(rdwFireDACDrivers[i],conn) > 0 then begin
- Result := rdwFireDACDbType[i];
- Break;
- end;
- i := i + 1;
- end;
-
+ If Result = dbtUndefined Then
+ Begin
+ conn := LowerCase(TFDConnection(Connection).DriverName);
+ i := 0;
+ While i < Length(rdwFireDACDrivers) do
+ Begin
+ If Pos(rdwFireDACDrivers[i], conn) > 0 then
+ Begin
+ Result := rdwFireDACDbType[i];
+ Break;
+ End;
+ i := i + 1;
+ End;
+ End;
// Eloy
case Result of
dbtODBC:
@@ -207,7 +209,6 @@ function TRESTDWFireDACDriver.getQuery: TRESTDWDrvQuery;
qry.ResourceOptions.ParamCreate := True;
qry.ResourceOptions.StoreItems := [siMeta,siData,siDelta];
qry.FetchOptions.Mode := fmAll;
-
Result := TRESTDWFireDACQuery.Create(qry);
end;
@@ -499,7 +500,6 @@ procedure TRESTDWFireDACQuery.SaveToStream(stream: TStream);
begin
qry := TFDQuery(Self.Owner);
qry.SaveToStream(stream, sfBinary);
-
stream.Position := 0;
end;
diff --git a/CORE/Source/Database_Drivers/uRESTDWIBDACDriver.pas b/CORE/Source/Database_Drivers/uRESTDWIBDACDriver.pas
index 2ce2345a..10c4f18d 100644
--- a/CORE/Source/Database_Drivers/uRESTDWIBDACDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWIBDACDriver.pas
@@ -86,7 +86,7 @@ TRESTDWIBDACDriver = class(TRESTDWDriverBase)
procedure setConnection(AValue: TComponent); override;
public
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
@@ -139,7 +139,7 @@ procedure TRESTDWIBDACStoreProc.Prepare;
{ TRESTDWIBDACDriver }
-function TRESTDWIBDACDriver.getConectionType : TRESTDWDatabaseType;
+function TRESTDWIBDACDriver.getConnectionType : TRESTDWDatabaseType;
begin
// somente Firebird
Result := dbtFirebird;
diff --git a/CORE/Source/Database_Drivers/uRESTDWInterbaseDriver.pas b/CORE/Source/Database_Drivers/uRESTDWInterbaseDriver.pas
index b4db6dd5..55d86b5d 100644
--- a/CORE/Source/Database_Drivers/uRESTDWInterbaseDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWInterbaseDriver.pas
@@ -81,7 +81,7 @@ TRESTDWInterbaseDriver = class(TRESTDWDriverBase)
protected
procedure setConnection(AValue: TComponent); override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
public
constructor Create(AOwner : TComponent); override;
@@ -255,7 +255,7 @@ procedure TRESTDWInterbaseDriver.setConnection(AValue: TComponent);
inherited setConnection(AValue);
end;
-function TRESTDWInterbaseDriver.getConectionType: TRESTDWDatabaseType;
+function TRESTDWInterbaseDriver.getConnectionType: TRESTDWDatabaseType;
begin
Result := dbtInterbase;
end;
diff --git a/CORE/Source/Database_Drivers/uRESTDWLazarusDriver.pas b/CORE/Source/Database_Drivers/uRESTDWLazarusDriver.pas
index 446e43d6..d248e1e6 100644
--- a/CORE/Source/Database_Drivers/uRESTDWLazarusDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWLazarusDriver.pas
@@ -1,4 +1,4 @@
-unit uRESTDWLazarusDriver;
+unit uRESTDWLazarusDriver;
{
REST Dataware .
@@ -25,7 +25,7 @@ interface
uses
LResources, SQLDB, Classes, SysUtils, DB,
- uRESTDWDriverBase, uRESTDWProtoTypes, uRESTDWBasicTypes;
+ uRESTDWDriverBase, uRESTDWProtoTypes, uRESTDWBasicDbTypes;
const
rdwLazSQLConnector : array[0..9] of string = (('mssql'),('sybase'),
@@ -73,7 +73,7 @@ TRESTDWLazarusDriver = class(TRESTDWDriverBase)
protected
procedure setConnection(AValue: TComponent); override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
public
constructor Create(AOwner : TComponent); override;
@@ -241,12 +241,12 @@ procedure TRESTDWLazarusDriver.setConnection(AValue: TComponent);
inherited setConnection(AValue);
end;
-function TRESTDWLazarusDriver.getConectionType: TRESTDWDatabaseType;
+function TRESTDWLazarusDriver.getConnectionType: TRESTDWDatabaseType;
var
conn : string;
i: integer;
begin
- Result:=inherited getConectionType;
+ Result:=inherited getConnectionType;
if not Assigned(Connection) then
Exit;
diff --git a/CORE/Source/Database_Drivers/uRESTDWMyDACDriver.pas b/CORE/Source/Database_Drivers/uRESTDWMyDACDriver.pas
index e1c9b6fb..043b34f3 100644
--- a/CORE/Source/Database_Drivers/uRESTDWMyDACDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWMyDACDriver.pas
@@ -81,7 +81,7 @@ TRESTDWMyDACDriver = class(TRESTDWDriverBase)
FTransaction : TMyTransaction;
protected
procedure setConnection(AValue: TComponent); override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
public
constructor Create(AOwner : TComponent); override;
@@ -135,7 +135,7 @@ procedure TRESTDWMyDACStoreProc.Prepare;
{ TRESTDWMyDACDriver }
-function TRESTDWMyDACDriver.getConectionType : TRESTDWDatabaseType;
+function TRESTDWMyDACDriver.getConnectionType : TRESTDWDatabaseType;
begin
// somente MySQL
Result := dbtMySQL;
diff --git a/CORE/Source/Database_Drivers/uRESTDWUniDACDriver.pas b/CORE/Source/Database_Drivers/uRESTDWUniDACDriver.pas
index 48ae45e3..f73a0bd4 100644
--- a/CORE/Source/Database_Drivers/uRESTDWUniDACDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWUniDACDriver.pas
@@ -100,7 +100,7 @@ TRESTDWUniDACDriver = class(TRESTDWDriverBase)
FTransaction : TUniTransaction;
protected
procedure setConnection(AValue: TComponent); override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
public
constructor Create(AOwner : TComponent); override;
@@ -154,25 +154,28 @@ procedure TRESTDWUniDACStoreProc.Prepare;
{ TRESTDWUniDACDriver }
-function TRESTDWUniDACDriver.getConectionType : TRESTDWDatabaseType;
+function TRESTDWUniDACDriver.getConnectionType : TRESTDWDatabaseType;
var
prot : string;
i : integer;
begin
- Result:=inherited getConectionType;
- if not Assigned(Connection) then
- Exit;
-
- prot := LowerCase(TUniConnection(Connection).ProviderName);
-
- i := 0;
- while i < Length(rdwUniDACProtocols) do begin
- if Pos(rdwUniDACProtocols[i],prot) > 0 then begin
- Result := rdwUniDACDbType[i];
- Break;
- end;
- i := i + 1;
- end;
+ Result := Inherited getConnectionType;
+ If Not Assigned(Connection) Then
+ Exit;
+ If Result = dbtUndefined Then
+ Begin
+ prot := LowerCase(TUniConnection(Connection).ProviderName);
+ i := 0;
+ While i < Length(rdwUniDACProtocols) Do
+ Begin
+ If Pos(rdwUniDACProtocols[i],prot) > 0 Then
+ Begin
+ Result := rdwUniDACDbType[i];
+ Break;
+ End;
+ i := i + 1;
+ End;
+ End;
end;
function TRESTDWUniDACDriver.getQuery : TRESTDWDrvQuery;
diff --git a/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas b/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas
index 210de8a7..4be416b0 100644
--- a/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas
+++ b/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas
@@ -1,4 +1,4 @@
-unit uRESTDWZeosDriver;
+unit uRESTDWZeosDriver;
{$I ..\Includes\uRESTDW.inc}
@@ -37,14 +37,14 @@ interface
{$ENDIF}
{$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT}
- ZMemTable,
+ ZMemTable,
{$ELSE}
- uRESTDWMemoryDataset,
+ uRESTDWMemoryDataset,
{$ENDIF}
Classes, SysUtils, DB, Variants,
ZConnection, ZDataset, ZSequence, ZDbcIntfs, ZAbstractRODataset,
ZAbstractDataset, ZStoredProcedure, ZEncoding, ZDatasetUtils,
- uRESTDWDriverBase, uRESTDWBasicTypes, uRESTDWProtoTypes, uRESTDWZeosPhysLink
+ uRESTDWDriverBase, uRESTDWBasicDbTypes, uRESTDWProtoTypes, uRESTDWZeosPhysLink
;
const
@@ -111,7 +111,7 @@ TRESTDWZeosDriver = class(TRESTDWDriverBase)
protected
procedure setConnection(AValue: TComponent); override;
- function getConectionType : TRESTDWDatabaseType; override;
+ function getConnectionType : TRESTDWDatabaseType; override;
Function compConnIsValid(comp : TComponent) : boolean; override;
Procedure zAfterPost(DataSet: TDataSet);
public
@@ -171,26 +171,29 @@ procedure TRESTDWZeosDriver.setConnection(AValue: TComponent);
inherited setConnection(AValue);
end;
-function TRESTDWZeosDriver.getConectionType: TRESTDWDatabaseType;
-var
- prot : string;
- i : integer;
-begin
- Result:=inherited getConectionType;
- if not Assigned(Connection) then
- Exit;
-
- prot := LowerCase(TZConnection(Connection).Protocol);
-
- i := 0;
- while i < Length(rdwZeosProtocols) do begin
- if Pos(rdwZeosProtocols[i],prot) > 0 then begin
- Result := rdwZeosDbType[i];
- Break;
- end;
- i := i + 1;
- end;
-end;
+Function TRESTDWZeosDriver.getConnectionType: TRESTDWDatabaseType;
+Var
+ prot : String;
+ i : integer;
+Begin
+ Result:=inherited getConnectionType;
+ If Not Assigned(Connection) Then
+ Exit;
+ If Result = dbtUndefined Then
+ Begin
+ prot := LowerCase(TZConnection(Connection).Protocol);
+ i := 0;
+ While i < Length(rdwZeosProtocols) Do
+ Begin
+ If Pos(rdwZeosProtocols[i],prot) > 0 Then
+ Begin
+ Result := rdwZeosDbType[i];
+ Break;
+ End;
+ i := i + 1;
+ End;
+ End;
+End;
function TRESTDWZeosDriver.getQuery(AUnidir: boolean): TRESTDWDrvQuery;
var
@@ -521,27 +524,20 @@ procedure TRESTDWZeosQuery.setParamValue(IParam : integer; AValue : variant);
procedure TRESTDWZeosQuery.SaveToStream(stream: TStream);
var
- qry : TZAbstractRODataset;
- {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT}
- memtable : TZMemTable;
- {$ELSE}
- memtable : TRESTDWMemtable;
- {$ENDIF}
+ qry : TZAbstractRODataset;
+ memtable : TZMemTable;
begin
qry := TZQuery(Self.Owner);
- {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT}
- memtable := TZMemTable.Create(nil);
- {$ELSE}
- memtable := TRESTDWMemtable.Create(nil);
- {$ENDIF}
+ memtable := TZMemTable.Create(nil);
try
- {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT}
- memtable.AssignDataFrom(qry);
- {$ELSE}
- memtable.Assign(qry);
- {$ENDIF}
- memtable.SaveToStream(stream);
- stream.Position := 0;
+ {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT}
+ memtable.AssignDataFrom(qry);
+ {$ELSE}
+ memtable.Assign(qry);
+ {$ENDIF}
+ //TODO SaveTostream
+// memtable.SaveToStream(stream);
+ stream.Position := 0;
finally
FreeAndNil(memtable);
end;
diff --git a/CORE/Source/Includes/RDWWIZ.inc b/CORE/Source/Includes/RDWWIZ.inc
index f4c1372f..4790cd35 100644
--- a/CORE/Source/Includes/RDWWIZ.inc
+++ b/CORE/Source/Includes/RDWWIZ.inc
@@ -354,9 +354,64 @@
{$DEFINE ISDELPHI}
{$ENDIF}
{$ENDIF}
+{$IFDEF VER300} //Delphi 10 Seatle
+ {$DEFINE DELPHI2_LVL}
+ {$DEFINE DELPHI3_LVL}
+ {$DEFINE DELPHI4_LVL}
+ {$DEFINE DELPHI5_LVL}
+ {$DEFINE DELPHI6_LVL}
+ {$DEFINE DELPHI7_LVL}
+ {$DEFINE DELPHI9_LVL}
+ {$DEFINE DELPHI2006_LVL}
+ {$DEFINE DELPHI2007_LVL}
+ {$DEFINE DELPHI2010_LVL}
+ {$DEFINE DELPHIXE_LVL}
+ {$DEFINE DELPHIXE2_LVL}
+ {$DEFINE DELPHIXE3_LVL}
+ {$DEFINE DELPHIXE4_LVL}
+ {$DEFINE DELPHIXE5_LVL}
+ {$DEFINE DELPHIXE6_LVL}
+ {$DEFINE DELPHIXE7_LVL}
+ {$DEFINE DELPHIXE8_LVL}
+ {$DEFINE DELPHI_TOUCH}
+ {$DEFINE DELPHI_UNICODE}
+ {$IFNDEF BCB}
+ {$DEFINE ISDELPHI}
+ {$ENDIF}
+{$ENDIF}
+{$IFDEF VER310} //Delphi 10.1 Berlin
+ {$DEFINE DELPHI2_LVL}
+ {$DEFINE DELPHI3_LVL}
+ {$DEFINE DELPHI4_LVL}
+ {$DEFINE DELPHI5_LVL}
+ {$DEFINE DELPHI6_LVL}
+ {$DEFINE DELPHI7_LVL}
+ {$DEFINE DELPHI9_LVL}
+ {$DEFINE DELPHI2006_LVL}
+ {$DEFINE DELPHI2007_LVL}
+ {$DEFINE DELPHI2010_LVL}
+ {$DEFINE DELPHIXE_LVL}
+ {$DEFINE DELPHIXE2_LVL}
+ {$DEFINE DELPHIXE3_LVL}
+ {$DEFINE DELPHIXE4_LVL}
+ {$DEFINE DELPHIXE5_LVL}
+ {$DEFINE DELPHIXE6_LVL}
+ {$DEFINE DELPHIXE7_LVL}
+ {$DEFINE DELPHIXE8_LVL}
+ {$DEFINE DELPHIXE9_LVL}
+ {$DEFINE DELPHIXE10_LVL}
+ {$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
+ {$DEFINE DELPHI_TOUCH}
+ {$DEFINE DELPHI_UNICODE}
+ {$DEFINE DELPHI10_LVL}
+ {$IFNDEF BCB}
+ {$DEFINE ISDELPHI}
+ {$ENDIF}
+{$ENDIF}
-{$IFDEF VER300}
+{$IFDEF VER320} //Delphi 10.2 Tokyo
{$DEFINE DELPHI2_LVL}
{$DEFINE DELPHI3_LVL}
{$DEFINE DELPHI4_LVL}
@@ -376,6 +431,9 @@
{$DEFINE DELPHIXE7_LVL}
{$DEFINE DELPHIXE8_LVL}
{$DEFINE DELPHIXE9_LVL}
+ {$DEFINE DELPHIXE10_LVL}
+ {$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
{$DEFINE DELPHI_TOUCH}
{$DEFINE DELPHI_UNICODE}
{$DEFINE DELPHI10_LVL}
@@ -384,7 +442,7 @@
{$ENDIF}
{$ENDIF}
-{$IFDEF VER310}
+{$IFDEF VER330} //Delphi 10.3 Rio
{$DEFINE DELPHI2_LVL}
{$DEFINE DELPHI3_LVL}
{$DEFINE DELPHI4_LVL}
@@ -406,6 +464,100 @@
{$DEFINE DELPHIXE9_LVL}
{$DEFINE DELPHIXE10_LVL}
{$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
+ {$DEFINE DELPHI_TOUCH}
+ {$DEFINE DELPHI_UNICODE}
+ {$DEFINE DELPHI10_LVL}
+ {$IFNDEF BCB}
+ {$DEFINE ISDELPHI}
+ {$ENDIF}
+{$ENDIF}
+
+{$IFDEF VER340} //Delphi 10.4 Sydney
+ {$DEFINE DELPHI2_LVL}
+ {$DEFINE DELPHI3_LVL}
+ {$DEFINE DELPHI4_LVL}
+ {$DEFINE DELPHI5_LVL}
+ {$DEFINE DELPHI6_LVL}
+ {$DEFINE DELPHI7_LVL}
+ {$DEFINE DELPHI9_LVL}
+ {$DEFINE DELPHI2006_LVL}
+ {$DEFINE DELPHI2007_LVL}
+ {$DEFINE DELPHI2010_LVL}
+ {$DEFINE DELPHIXE_LVL}
+ {$DEFINE DELPHIXE2_LVL}
+ {$DEFINE DELPHIXE3_LVL}
+ {$DEFINE DELPHIXE4_LVL}
+ {$DEFINE DELPHIXE5_LVL}
+ {$DEFINE DELPHIXE6_LVL}
+ {$DEFINE DELPHIXE7_LVL}
+ {$DEFINE DELPHIXE8_LVL}
+ {$DEFINE DELPHIXE9_LVL}
+ {$DEFINE DELPHIXE10_LVL}
+ {$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
+ {$DEFINE DELPHI_TOUCH}
+ {$DEFINE DELPHI_UNICODE}
+ {$DEFINE DELPHI10_LVL}
+ {$IFNDEF BCB}
+ {$DEFINE ISDELPHI}
+ {$ENDIF}
+{$ENDIF}
+
+{$IFDEF VER350} //Delphi 11 Alexandria
+ {$DEFINE DELPHI2_LVL}
+ {$DEFINE DELPHI3_LVL}
+ {$DEFINE DELPHI4_LVL}
+ {$DEFINE DELPHI5_LVL}
+ {$DEFINE DELPHI6_LVL}
+ {$DEFINE DELPHI7_LVL}
+ {$DEFINE DELPHI9_LVL}
+ {$DEFINE DELPHI2006_LVL}
+ {$DEFINE DELPHI2007_LVL}
+ {$DEFINE DELPHI2010_LVL}
+ {$DEFINE DELPHIXE_LVL}
+ {$DEFINE DELPHIXE2_LVL}
+ {$DEFINE DELPHIXE3_LVL}
+ {$DEFINE DELPHIXE4_LVL}
+ {$DEFINE DELPHIXE5_LVL}
+ {$DEFINE DELPHIXE6_LVL}
+ {$DEFINE DELPHIXE7_LVL}
+ {$DEFINE DELPHIXE8_LVL}
+ {$DEFINE DELPHIXE9_LVL}
+ {$DEFINE DELPHIXE10_LVL}
+ {$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
+ {$DEFINE DELPHI_TOUCH}
+ {$DEFINE DELPHI_UNICODE}
+ {$DEFINE DELPHI10_LVL}
+ {$IFNDEF BCB}
+ {$DEFINE ISDELPHI}
+ {$ENDIF}
+{$ENDIF}
+
+{$IFDEF VER360} //Delphi 12 Athens
+ {$DEFINE DELPHI2_LVL}
+ {$DEFINE DELPHI3_LVL}
+ {$DEFINE DELPHI4_LVL}
+ {$DEFINE DELPHI5_LVL}
+ {$DEFINE DELPHI6_LVL}
+ {$DEFINE DELPHI7_LVL}
+ {$DEFINE DELPHI9_LVL}
+ {$DEFINE DELPHI2006_LVL}
+ {$DEFINE DELPHI2007_LVL}
+ {$DEFINE DELPHI2010_LVL}
+ {$DEFINE DELPHIXE_LVL}
+ {$DEFINE DELPHIXE2_LVL}
+ {$DEFINE DELPHIXE3_LVL}
+ {$DEFINE DELPHIXE4_LVL}
+ {$DEFINE DELPHIXE5_LVL}
+ {$DEFINE DELPHIXE6_LVL}
+ {$DEFINE DELPHIXE7_LVL}
+ {$DEFINE DELPHIXE8_LVL}
+ {$DEFINE DELPHIXE9_LVL}
+ {$DEFINE DELPHIXE10_LVL}
+ {$DEFINE DELPHIXE10_1_LVL}
+ {$DEFINE DELPHIXE10_2_LVL}
{$DEFINE DELPHI_TOUCH}
{$DEFINE DELPHI_UNICODE}
{$DEFINE DELPHI10_LVL}
@@ -414,7 +566,7 @@
{$ENDIF}
{$ENDIF}
-{$IFDEF VER320}
+{$IFDEF VER370} //Delphi 13 Florence
{$DEFINE DELPHI2_LVL}
{$DEFINE DELPHI3_LVL}
{$DEFINE DELPHI4_LVL}
diff --git a/CORE/Source/Includes/uRESTDW.inc b/CORE/Source/Includes/uRESTDW.inc
index 59181a83..e9c8f078 100644
--- a/CORE/Source/Includes/uRESTDW.inc
+++ b/CORE/Source/Includes/uRESTDW.inc
@@ -40,6 +40,52 @@
{$ENDIF}
{$IFNDEF FPC}
+ {$if CompilerVersion < 26}
+ {$DEFINE RESTDWMEMTABLE}
+ {$ELSE}
+ {.$DEFINE RESTDWMEMTABLE}
+ {$DEFINE RESTFDMEMTABLE}
+ {.$DEFINE UNIDACMEM}
+ {.$DEFINE ZEOSMEM}
+ {.$DEFINE USE_TAURUS_TLS}
+ {$IFEND}
+{$ELSE}
+ //For Lazarus
+ {$DEFINE RESTDWMEMTABLE}
+ {.$DEFINE UNIDACMEM}
+ {.$DEFINE ZEOSMEM}
+ {.$DEFINE USE_TAURUS_TLS}
+{$ENDIF}
+
+
+{$IFNDEF FPC}
+ {$IFDEF VER370 or CompilerVersion >= 37}
+ {$DEFINE DELPHI13UP}
+ {$DEFINE DELPHI12UP}
+ {$DEFINE DELPHI11UP}
+ {$DEFINE DELPHI10_4UP}
+ {$DEFINE DELPHI10_3UP}
+ {$DEFINE DELPHI10_2UP}
+ {$DEFINE DELPHI10_1UP}
+ {$DEFINE DELPHI10_0UP}
+ {$DEFINE DELPHIXE8UP}
+ {$DEFINE DELPHIXE7UP}
+ {$DEFINE DELPHIXE6UP}
+ {$DEFINE DELPHIXE5UP}
+ {$DEFINE DELPHIXE4UP}
+ {$DEFINE DELPHIXE3UP}
+ {$DEFINE DELPHIXE2UP}
+ {$DEFINE DELPHIXEUP}
+ {$DEFINE DELPHI2010UP}
+ {$DEFINE DELPHI2009UP}
+ {$DEFINE DELPHI2007UP}
+ {$DEFINE DELPHI2006UP}
+ {$DEFINE DELPHI2005UP}
+ {$DEFINE DELPHI2025UP}
+ {$DEFINE DELPHI8UP}
+ {$DEFINE DELPHI7UP}
+ {$DEFINE RTL280_UP}
+ {$ENDIF ~VER370}
{$IFDEF VER360 or CompilerVersion >= 36}
{$DEFINE DELPHI12UP}
{$DEFINE DELPHI11UP}
@@ -138,6 +184,7 @@
{$ENDIF ~VER330}
{$IFDEF VER320 or CompilerVersion >= 32}
+ {$DEFINE DELPHI10_3UP}
{$DEFINE DELPHI10_2UP}
{$DEFINE DELPHI10_1UP}
{$DEFINE DELPHI10_0UP}
@@ -160,6 +207,8 @@
{$ENDIF ~VER320}
{$IFDEF VER310 or CompilerVersion >= 31}
+ {$DEFINE DELPHI10_3UP}
+ {$DEFINE DELPHI10_2UP}
{$DEFINE DELPHI10_1UP}
{$DEFINE DELPHI10_0UP}
{$DEFINE DELPHIXE8UP}
@@ -181,6 +230,9 @@
{$ENDIF ~VER310}
{$IFDEF VER300 or CompilerVersion >= 30}
+ {$DEFINE DELPHI10_3UP}
+ {$DEFINE DELPHI10_2UP}
+ {$DEFINE DELPHI10_1UP}
{$DEFINE DELPHI10_0UP}
{$DEFINE DELPHIXE8UP}
{$DEFINE DELPHIXE7UP}
@@ -514,6 +566,7 @@
{$IFNDEF RESTDWLAMW}
{$IFNDEF FPC}
{$IFDEF DELPHIXE5UP}
+ {$DEFINE SUPPORTS_CLASS_HELPERS}
{$IF Declared(FireMonkeyVersion) or Defined(FRAMEWORK_FMX)
Declared(FMX.Types.TFmxObject) or Defined(LINUX64)}
{$DEFINE HAS_FMX}
@@ -754,14 +807,3 @@
// Warnings
{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF}
-// for Delphi/BCB trial versions remove the point from the line below
-{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT}
-
-(* End of Compiler settings *)
-(* REST DataWare Generic Definitions *)
-
- {$DEFINE RESTDWMEMTABLE}
-
-(* End of REST DataWare Generic Definitions *)
-
-(******************************************************************************)
diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWABMemDBFilterExpr.pas b/CORE/Source/Plugins/Memdataset/uRESTDWABMemDBFilterExpr.pas
index 2ee590b6..8638725e 100644
--- a/CORE/Source/Plugins/Memdataset/uRESTDWABMemDBFilterExpr.pas
+++ b/CORE/Source/Plugins/Memdataset/uRESTDWABMemDBFilterExpr.pas
@@ -123,6 +123,9 @@ implementation
{$IFDEF DELPHI2010UP}
,ord(DB.ftSingle) // ftSingle
{$ENDIF}
+ {$IFDEF DELPHI2025UP}
+ ,ord(DB.ftLargeint) // ftSingle
+ {$ENDIF}
{$ELSE}
,ord(DB.ftUnknown) // ftObject
{$ENDIF}
diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWMemDBUtils.pas b/CORE/Source/Plugins/Memdataset/uRESTDWMemDBUtils.pas
index bd118ac2..3b5af422 100644
--- a/CORE/Source/Plugins/Memdataset/uRESTDWMemDBUtils.pas
+++ b/CORE/Source/Plugins/Memdataset/uRESTDWMemDBUtils.pas
@@ -41,6 +41,10 @@
{$IFDEF RTL200_UP}TBookmark{$ELSE}TBookmarkStr{$ENDIF RTL200_UP}
{$ENDIF};
+
+Type
+ TFieldListArray = Array of TField;
+
type
IRESTDWDataControl = interface
['{8B6910C8-D5FD-40BA-A427-FC54FE7B85E5}']
@@ -163,7 +167,8 @@ implementation
System.Generics.Collections,
{$ENDIF RTL240_UP}
{$IFDEF RESTDWVCL}uRESTDWMemVCLUtils, {$ENDIF}
- uRESTDWMemTypes, uRESTDWMemConsts, uRESTDWMemResources;
+ uRESTDWMemTypes, uRESTDWMemConsts, uRESTDWMemResources,
+ uRESTDWConsts;
{ TRESTDWDataLink }
procedure TRESTDWDataLink.FocusControl(Field: TFieldRef);
@@ -365,12 +370,12 @@ function CreateLocate(DataSet: TDataSet): TRESTDWLocateObject;
function DataSetLocateThrough(DataSet: TDataSet; const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
var
- FieldCount: Integer;
- Fields: TList{$IFDEF RTL240_UP}{$ENDIF RTL240_UP};
+ FieldCount : Integer;
+ Fields : TFieldListArray;
Bookmark: TBookmarkType;
function CompareField(Field: TField; const Value: Variant): Boolean;
var
- S: string;
+ S, A : string;
begin
if Field.DataType in [ftString{$IFDEF UNICODE}, ftWideString{$ENDIF UNICODE}] then
begin
@@ -379,12 +384,13 @@ function DataSetLocateThrough(DataSet: TDataSet; const KeyFields: string;
else
begin
S := Field.AsString;
+ A := Copy(Value, InitStrPos, Field.Size);
if loPartialKey in Options then
Delete(S, Length(Value) + 1, MaxInt);
if loCaseInsensitive in Options then
- Result := AnsiSameText(S, Value)
+ Result := Uppercase(S) = Uppercase(A)
else
- Result := AnsiSameStr(S, Value);
+ Result := S = A;
end;
end
else
@@ -404,15 +410,33 @@ function DataSetLocateThrough(DataSet: TDataSet; const KeyFields: string;
Result := Result and CompareField(TField(Fields[I]), KeyValues[I]);
end;
end;
+ procedure GetFieldList(List: TFieldListArray; const FieldNames: string);
+ var
+ I, Len,
+ Pos : Integer;
+ Field : TField;
+ begin
+ Len := FieldNames.Length;
+ Pos := 1;
+ I := 0;
+ while Pos <= Len do
+ begin
+ Field := DataSet.FieldByName(ExtractFieldName(FieldNames, Pos));
+ SetLength(Fields, I+1);
+ Fields[I] := Field;
+ Inc(I);
+ end;
+ End;
begin
Result := False;
+ SetLength(Fields, 0);
DataSet.CheckBrowseMode;
if DataSet.IsEmpty then
Exit;
- Fields := TList{$IFDEF RTL240_UP}{$ENDIF RTL240_UP}.Create;
+// Fields := TList.Create;
try
- DataSet.GetFieldList(Fields, KeyFields);
- FieldCount := Fields.Count;
+ GetFieldList(Fields, KeyFields);
+ FieldCount := Length(Fields);
Result := CompareRecord;
if Result then
Exit;
@@ -446,7 +470,8 @@ function DataSetLocateThrough(DataSet: TDataSet; const KeyFields: string;
DataSet.EnableControls;
end;
finally
- Fields.Free;
+ SetLength(Fields, 0);
+// Fields.Free;
end;
end;
{ DataSetSortedSearch. Navigate on sorted DataSet routine. }
diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
index 5e72d4ed..f49a1eaf 100644
--- a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
+++ b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas
@@ -29,10 +29,11 @@
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
+
uses
SysUtils, Classes, DB, Variants, uRESTDWProtoTypes, uRESTDWMemDBUtils,
uRESTDWMemExprParser, {$IFNDEF FPC}uRESTDWABMemDBFilterExpr,{$ENDIF}
- uRESTDWAbout, uRESTDWConsts;
+ uRESTDWAbout, uRESTDWConsts, uRESTDWBasicDbTypes;
Const
ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle,
@@ -100,158 +101,35 @@
TApplyRecordEvent = Procedure(Dataset : TDataset;
RecStatus : TRecordStatus;
FoundApply : Boolean) Of Object;
- TMemBlobData = TRESTDWBytes;
- PMemBlobData = ^TRESTDWBytes;
- TMemBlobArray = Array Of TMemBlobData;
- PMemBlobArray = ^TMemBlobArray;
- PRESTDWMTMemoryRecord = ^TRESTDWMTMemoryRecord;
- TRESTDWMTMemoryRecord = Class;
TLoadMode = (lmCopy, lmAppend);
TSaveLoadState = (slsNone, slsLoading, slsSaving);
TCompareRecords = Function(Item1, Item2 : TRESTDWMTMemoryRecord) : Integer Of Object;
TIntArray = Array Of Integer;
TRESTDWMTBookmarkData = Integer;
- TRESTDWMemTable = Class;
- {$IFNDEF FPC}
- {$IF CompilerVersion > 21}
- PRESTDWMTMemBuffer = PByte;
- TRESTDWMTBookmark = TBookmark;
- TRESTDWMTValueBuffer = TValueBuffer;
- TRESTDWMTRecordBuffer = TRecordBuffer;
- {$ELSE}
- {$IFDEF UNICODE}
- PRESTDWMTMemBuffer = PByte;
- {$ELSE}
- PRESTDWMTMemBuffer = PAnsiChar;
- {$ENDIF UNICODE}
- TRESTDWMTBookmark = Pointer;
- TRESTDWMTValueBuffer = Pointer;
- TRESTDWMTRecordBuffer = Pointer;
- {$IFEND}
- {$ELSE}
- TValueBuffer = Array of Byte;
- PRESTDWMTMemBuffer = PByte;
- TRESTDWMTBookmark = Pointer;
- TRESTDWMTValueBuffer = Pointer;
- TRESTDWMTRecordBuffer = TRecordBuffer;
- {$ENDIF}
- PBlobBuffer = ^TBlobBuffer;
- TBlobBuffer = Packed Record
- FieldNo,
- OrgBufID : Integer;
- Buffer : Pointer;
- Size : Int64;
- end;
- PRESTDWBlobField = ^TRESTDWBlobField;
- TRESTDWBlobField = Packed Record
- ConnBlobBuffer : Array[0..11] Of Byte; // DB specific data is stored here
- BlobBuffer : PBlobBuffer;
- End;
- PRESTDWRecLinkItem = ^TRESTDWRecLinkItem;
- TRESTDWRecLinkItem = Packed Record
- Prior : PRESTDWRecLinkItem;
- Next : PRESTDWRecLinkItem;
- End;
- PRESTDWBookmark = ^TRESTDWBookmark;
- TRESTDWBookmark = Packed Record
- BookmarkData : PRESTDWRecLinkItem;
- BookmarkInt : Integer; // Was used by TArrayBufIndex
- BookmarkFlag : TBookmarkFlag;
- End;
-
- {
- TStreamField = Class(TBlobField)
- Private
- FStream : TStream;
- Function GetAsStream : TStream;
- Public
- Constructor Create(AOwner : TComponent); Override;
- Destructor Destroy; Override;
- Procedure Put;
- Property Value : TStream Read GetAsStream;
- End;
-
- TdwcolorOptions = Set Of (dwcoAllowedSharp, dwcoShowWebSharp, dwcoSysColors);
- TColorField = class(TIntegerField)
- Private
- FOptions : TdwcolorOptions;
- Protected
- Function GetIdentText (AValue : Integer;
- Var Text : String) : Boolean; Virtual;Overload;
- Procedure GetText (Var Text : String;
- DisplayText : Boolean); Override;
- Function SetAsIdentString(Const AValue : String) : Boolean; Virtual;
- Procedure SetAsString (Const AValue : String); Override;
- Public
- Constructor Create (AOwner : TComponent); Override;
- Published
- Property MaxValue Stored False;
- Property MinValue Stored False;
- Property Options : TdwcolorOptions Read FOptions Write FOptions Default [dwcoAllowedSharp];
- End;
-}
- IRESTDWMemTable = Interface
- Function GetRecordCount : Integer;
- Function GetMemoryRecord (Index : Integer) : TRESTDWMTMemoryRecord;
- Function GetOffSets (aField : TField) : Word;Overload;
- Function GetOffSets (Index : Integer) : Word;Overload;
- Function GetOffSetsBlobs : Word;
- Function DataTypeSuported(datatype : TFieldType) : Boolean; // new
- Function DataTypeIsBlobTypes(datatype : TFieldType) : Boolean; // new
- Function GetBlobRec (Field : TField;
- Rec : TRESTDWMTMemoryRecord) : TMemBlobData;
- Function CreateBlobStream (Field : TField;
- Mode : TBlobStreamMode) : TStream;
- Function GetCalcFieldLen (FieldType: TFieldType;
- Size : Word) : Word;
- Procedure InternalAddRecord (Buffer : {$IFDEF FPC}Pointer{$ELSE}
- {$IFDEF RESTDWANDROID}TRecBuf{$ELSE}
- {$IF CompilerVersion >22}Pointer{$ELSE}TRecordBuffer{$IFEND}{$ENDIF}{$ENDIF};
- aAppend : Boolean);
- Procedure InitRecord (Buffer : {$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF});
- Function AllocRecordBuffer : TRecordBuffer;
- Procedure SetMemoryRecordData(Buffer : PRESTDWMTMemBuffer;
- Pos : Integer);
- Procedure AfterLoad;
- Function GetDataset : TDataset;
- Function GetBlob (RecNo, Index : Integer) : PMemBlobData;
- Procedure Loaded;
- {$IFDEF FPC}
- Function GetDatabaseCharSet : TDatabaseCharSet;
- {$ENDIF}
- End;
- TRESTDWStorageBase = class(TRESTDWComponent)
- Private
- {$IFDEF FPC}
- FDatabaseCharSet: TDatabaseCharSet;
- {$ENDIF}
- FEncodeStrs: Boolean;
- Protected
- Procedure SaveDatasetToStream (Dataset : TDataset;
- Var stream : TStream); Virtual;
- Procedure LoadDatasetFromStream(Dataset : TDataset;
- stream : TStream); Virtual;
- Procedure SaveDWMemToStream (Dataset : IRESTDWMemTable;
- Var stream : TStream); Virtual;
- Procedure LoadDWMemFromStream (Dataset : IRESTDWMemTable;
- stream : TStream); Virtual;
- Public
- Constructor Create (AOwner : TComponent); Override;
- Procedure SaveToStream (Dataset : TDataset;
- Var Stream : TStream);
- Procedure LoadFromStream(Dataset : TDataset;
- Stream : TStream);
- Procedure SaveToFile (Dataset : TDataset;
- FileName : String);
- Procedure LoadFromFile (Dataset : TDataset;
- FileName : String);
- Public
- Property EncodeStrs : Boolean Read FEncodeStrs Write FEncodeStrs;
- Published
- {$IFDEF FPC}
- Property DatabaseCharSet : TDatabaseCharSet Read FDatabaseCharSet Write FDatabaseCharSet;
- {$ENDIF}
- End;
+ PBlobBuffer = ^TBlobBuffer;
+ TBlobBuffer = Packed Record
+ FieldNo,
+ OrgBufID : Integer;
+ Buffer : Pointer;
+ Size : Int64;
+ End;
+ PRESTDWBlobField = ^TRESTDWBlobField;
+ TRESTDWBlobField = Packed Record
+ ConnBlobBuffer : Array[0..11] Of Byte; // DB specific data is stored here
+ BlobBuffer : PBlobBuffer;
+ End;
+ PRESTDWRecLinkItem = ^TRESTDWRecLinkItem;
+ TRESTDWRecLinkItem = Packed Record
+ Prior : PRESTDWRecLinkItem;
+ Next : PRESTDWRecLinkItem;
+ End;
+ PRESTDWBookmark = ^TRESTDWBookmark;
+ TRESTDWBookmark = Packed Record
+ BookmarkData : PRESTDWRecLinkItem;
+ BookmarkInt : Integer; // Was used by TArrayBufIndex
+ BookmarkFlag : TBookmarkFlag;
+ End;
+ TRESTDWMemTable = Class;
PRecordList = ^TRecordList;
TRecordList = Class(TList)
Private
@@ -471,7 +349,6 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
FBookmarkOfs,
FBlobOfs,
FRecBufSize,
- FLastID,
FRowsOriginal,
FRowsChanged,
FRowsAffected : Integer;
@@ -480,8 +357,8 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
FDeletedValues,
FIndexList : TList;
FSrcAutoIncField : TField;
- FRecords : TRecordList;
FDataSet : TDataset;
+ FFieldAttrs : TFieldAttrs;
FFetch,
FAllPacketsFetched,
FRefreshing,
@@ -510,18 +387,10 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
FNullmaskSize : Byte;
FFilterParser : TExprParser;
FStorageDataType : TRESTDWStorageBase;
- FBlobs : TMemBlobArray;
FIndexes : TRESTDWDataSetIndexDefs;
FDefaultIndex,
FCurrentIndexDef : TRESTDWDatasetIndex;
FFieldDefClass : TFieldClass;
- {$IFDEF FPC}
- vDatabaseCharSet : TDatabaseCharSet;
- Procedure SetDatabaseCharSet(Value : TDatabaseCharSet);
- Function GetDatabaseCharSet : TDatabaseCharSet;
- {$ELSE}
- FFilterExpression : TRDWABExprParser;
- {$ENDIF}
Procedure CalcOffSets;
Function AddRecord : TRESTDWMTMemoryRecord;
Function InsertRecord(Index : Integer) : TRESTDWMTMemoryRecord;
@@ -532,79 +401,82 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Compare : TCompareRecords);
Procedure Sort;
Function CalcRecordSize : Integer;
- Function GetMemoryRecord(Index : Integer) : TRESTDWMTMemoryRecord;
Function GetCapacity : Integer;
Function RecordFilter : Boolean;
Procedure SetCapacity(Value : Integer);
Procedure ClearRecords;
- Procedure InitBufferPointers(GetProps : Boolean);
+ Procedure InitBufferPointers(GetProps : Boolean);
Procedure CheckStructure (UseAutoIncAsInteger : Boolean = False);
Procedure AddStatusField;
Procedure HideStatusField;
Function CopyFromDataSet: Integer;
Procedure ClearChanges;
- Procedure DoBeforeApply (ADataset : TDataset;
- RowsPending : Integer);
- Procedure DoAfterApply (ADataset : TDataset;
- RowsApplied : Integer);
- Procedure DoBeforeApplyRecord(ADataset : TDataset;
- RS : TRecordStatus;
- aFound : Boolean);
- Procedure DoAfterApplyRecord (ADataset : TDataset;
- RS : TRecordStatus;
- aApply : Boolean);
- Procedure InternalGotoBookmarkData(BookmarkData : TRESTDWMTBookmarkData);
- Function InternalGetFieldData (Field : TField;
- Var Buffer : TRESTDWMTValueBuffer) : Boolean;
- Procedure InternalSetFieldData (Field : TField;
- Buffer : Pointer;
+ Function GetFieldData (FieldNo : Integer;
+ Var Buffer : TValueBuffer): Boolean; overload;{$IFNDEF FPC}override;{$ENDIF}
+ {$IFDEF FPC}
+ Function GetFieldData (Field : TField;
+ Buffer : Pointer;
+ NativeFormat : Boolean): Boolean; Overload; Override;
+ {$ENDIF}
+ Procedure DoBeforeApply (ADataset : TDataset;
+ RowsPending : Integer);
+ Procedure DoAfterApply (ADataset : TDataset;
+ RowsApplied : Integer);
+ Procedure DoBeforeApplyRecord (ADataset : TDataset;
+ RS : TRecordStatus;
+ aFound : Boolean);
+ Procedure DoAfterApplyRecord (ADataset : TDataset;
+ RS : TRecordStatus;
+ aApply : Boolean);
+ Procedure InternalGotoBookmarkData(BookmarkData : TRESTDWMTBookmarkData);
+ Procedure InternalSetFieldData (Field : TField;
+ Buffer : Pointer;
Const ValidateBuffer : TRESTDWMTValueBuffer);
+ {$IFDEF FPC}
+ Procedure SetProviderFlags;
+ {$ENDIF}
Protected
- Function IsLookup (Index : Integer): Boolean;
- Function GetFieldDef (Index : Integer): Integer;
- Function GetFieldIndex (Const aName : String) : Integer;
- Function FindFieldIndex (Field : TField) : Integer;
- Function FindFieldData (Buffer : Pointer;
- Field : TField) : Pointer;
+ Function IsLookup (Index : Integer) : Boolean;
+ Function GetFieldDef (Index : Integer) : Integer;
+ Function GetFieldIndex (Const aName : String) : Integer;
+ Function FindFieldIndex (Field : TField) : Integer;
+ Function FindFieldData (Buffer : Pointer;
+ Field : TField) : Pointer;
Function CompareFields (Data1,
- Data2 : Pointer;
- FieldType : TFieldType;
- CaseInsensitive : Boolean): Integer; Virtual;
- Function GetFieldClass (FieldType : TFieldType) : TFieldClass; Override;
- Procedure DesignNotify (Const AFieldName : String;
- Dummy : Integer);
+ Data2 : Pointer;
+ FieldType : TFieldType;
+ CaseInsensitive : Boolean) : Integer; Virtual;
+ Function GetFieldClass (FieldType : TFieldType) : TFieldClass; Override;
+ Procedure DesignNotify (Const AFieldName : String;
+ Dummy : Integer);
// Delphi 2006+ has support for DWWideString
{$IF DEFINED(FPC) OR DEFINED(RESTDWVCL)}
- Procedure DataConvert (Field : TField;
- Source,
- Dest : Pointer;
- ToNative : Boolean); Override;
+ Procedure DataConvert (Field : TField;
+ Source,
+ Dest : Pointer;
+ ToNative : Boolean); Override;
{$IFEND}
// Procedure DefChanged (Sender : TObject); Override;
- Procedure AssignMemoryRecord (Rec : TRESTDWMTMemoryRecord;
- Buffer : PRESTDWMTMemBuffer);
- Function GetActiveRecBuf (Var RecBuf : PRESTDWMTMemBuffer) : Boolean; Virtual;
+ Procedure AssignMemoryRecord (Rec : TRESTDWMTMemoryRecord;
+ Buffer : PRESTDWMTMemBuffer);
+ Function GetActiveRecBuf (Var RecBuf : PRESTDWMTMemBuffer) : Boolean;Virtual;
Procedure InitFieldDefsFromFields;
Procedure InitFieldDefsFromFieldsInternal;
- Procedure RecordToBuffer (Rec : TRESTDWMTMemoryRecord;
- Buffer : PRESTDWMTMemBuffer);
- Procedure SetMemoryRecordData(Buffer : PRESTDWMTMemBuffer;
- Pos : Integer); Virtual;
- Procedure SetAutoIncFields (Buffer : PRESTDWMTMemBuffer); Virtual;
- Function CompareRecords (Item1,
- Item2 : TRESTDWMTMemoryRecord): Integer; Virtual;
- Function GetBlobData (Field : TField;
- Buffer : PRESTDWMTMemBuffer) : TMemBlobData;
- Procedure SetBlobData (Field : TField;
- Buffer : PRESTDWMTMemBuffer;
- Value : TMemBlobData);
+ Procedure RecordToBuffer (Rec : TRESTDWMTMemoryRecord;
+ Buffer : PRESTDWMTMemBuffer);
+ Procedure SetAutoIncFields (Buffer : PRESTDWMTMemBuffer); Virtual;
+ Function CompareRecords (Item1,
+ Item2 : TRESTDWMTMemoryRecord): Integer;Virtual;
+ Function GetBlobData (Field : TField;
+ Buffer : PRESTDWMTMemBuffer) : TMemBlobData;
+ Procedure SetBlobData (Field : TField;
+ Buffer : PRESTDWMTMemBuffer;
+ Value : TMemBlobData);
{$IFDEF NEXTGEN}
Function AllocRecBuf : TRecBuf; override;
Procedure FreeRecBuf (Var Buffer : TRecBuf); Override;
{$ENDIF NEXTGEN}
- Function AllocRecordBuffer : TRecordBuffer;{$IFNDEF NEXTGEN}Override;{$ENDIF}
- Procedure FreeRecordBuffer (Var Buffer : TRecordBuffer);{$IFNDEF NEXTGEN}Override;{$ENDIF}
Procedure InternalInitRecord (Buffer :{$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF}); Override;
Function GetRecord (Buffer :{$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF};
GetMode : TGetMode;
@@ -618,10 +490,6 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Procedure SetBookmarkData (Buffer :{$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF};
Data : TRESTDWMTBookmark); Overload;Override;
Procedure InitRecord (Buffer :{$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF}); Overload;Override;
- Procedure InternalAddRecord (Buffer : {$IFDEF FPC}Pointer{$ELSE}
- {$IFDEF RESTDWANDROID}TRecBuf{$ELSE}
- {$IF CompilerVersion >22}Pointer{$ELSE}TRecordBuffer{$IFEND}{$ENDIF}{$ENDIF};
- aAppend : Boolean); Overload;
Function GetCurrentRecord (Buffer :{$IFDEF NEXTGEN}TRecBuf{$ELSE}TRecordBuffer{$ENDIF}): Boolean; Overload;Override;
Procedure ClearCalcFields (Buffer :{$IFDEF NEXTGEN}NativeInt{$ELSE}TRecordBuffer{$ENDIF}); Override;
Function GetRecordSize : Word; Override;
@@ -655,7 +523,6 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Procedure InternalOpen; Override;
Procedure OpenCursor(InfoQuery : Boolean);Overload;Override;
Function IsCursorOpen : Boolean; Override;
- Function GetRecordCount : Integer; Override;
Function GetRecNo : Integer; Override;
Procedure SetRecNo (Value : Integer);Override;
Procedure DoAfterOpen; Override;
@@ -665,22 +532,44 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Var Value : Variant) : Boolean;Virtual;
Procedure Notification (AComponent : TComponent;
Operation : TOperation);Override;
- Function DataTypeSuported (datatype : TFieldType) : Boolean;
- Function DataTypeIsBlobTypes (datatype : TFieldType) : Boolean;
- Function GetOffSets (aField : TField) : Word;Overload;
- Function GetOffSets (Index : Integer) : Word;Overload;
- Function GetOffSetsBlobs : Word;
Function GetBlobRec (Field : TField;
Rec : TRESTDWMTMemoryRecord) : TMemBlobData;
- Function GetCalcFieldLen (FieldType : TFieldType;
- Size : Word) : Word;
procedure ClearIndexes;
Function GetDataset : TDataset;
Procedure SetIndexName(AValue : String);
- Property Records [Index : Integer] : TRESTDWMTMemoryRecord Read GetMemoryRecord;
Public
+ FLastID : Integer;
+ FBlobs : TMemBlobArray;
+ FRecords : TRecordList;
+ {$IFDEF FPC}
+ vDatabaseCharSet : TDatabaseCharSet;
+ Procedure SetDatabaseCharSet(Value : TDatabaseCharSet);
+ Function GetDatabaseCharSet : TDatabaseCharSet;
+ {$ELSE}
+ FFilterExpression : TRDWABExprParser;
+ {$ENDIF}
Constructor Create(AOwner : TComponent);Override;
Destructor Destroy;Override;
+ Function AllocRecordBuffer : TRecordBuffer;{$IFNDEF NEXTGEN}Override;{$ENDIF}
+ Procedure FreeRecordBuffer (Var Buffer : TRecordBuffer);{$IFNDEF NEXTGEN}Override;{$ENDIF}
+ Function GetMemoryRecord (Index : Integer) : TRESTDWMTMemoryRecord;
+ Procedure InternalAddRecord (Buffer : {$IFDEF FPC}Pointer{$ELSE}
+ {$IFDEF RESTDWANDROID}TRecBuf{$ELSE}
+ {$IF CompilerVersion >22}Pointer{$ELSE}TRecordBuffer{$IFEND}{$ENDIF}{$ENDIF};
+ aAppend : Boolean); Overload;
+ Function DataTypeSuported (datatype : TFieldType) : Boolean;
+ Function DataTypeIsBlobTypes (datatype : TFieldType) : Boolean;
+ Function GetCalcFieldLen (FieldType : TFieldType;
+ Size : Word) : Word;
+ Function InternalGetFieldData(Field : TField;
+ Var Buffer : TRESTDWMTValueBuffer;
+ cSize : Integer = 0) : Boolean;
+ Function GetOffSets (aField : TField) : Word;Overload;
+ Function GetOffSets (Index : Integer) : Word;Overload;
+ Function GetOffSetsBlobs : Word;
+ Procedure SetMemoryRecordData (Buffer : PRESTDWMTMemBuffer;
+ Pos : Integer); Virtual;
+ Function GetRecordCount : Integer; Override;
Function BookmarkValid (aBookmark : TBookmark) : Boolean;Override;
Function CompareBookmarks(aBookmark1,
aBookmark2 : TBookmark) : Integer;Override;
@@ -690,13 +579,14 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Procedure ClearBuffer;
Function GetBlob (aRecNo,
Index : Integer) : PMemBlobData;
+ Procedure GetFieldList(List: TList; const FieldNames: string); overload;
Function GetFieldData (Field : TField;
{$IFNDEF FPC}
{$IF CompilerVersion > 21}Var{$IFEND}
Buffer : TRESTDWMTValueBuffer
{$ELSE}
Buffer : Pointer
- {$ENDIF}) : Boolean;Overload;Override;
+ {$ENDIF}) : Boolean;Override;
{$IFNDEF NEXTGEN}
{$IFDEF RTL240_UP}
Function GetFieldData (Field : TField;
@@ -789,8 +679,11 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Property StorageDataType : TRESTDWStorageBase Read FStorageDataType Write FStorageDataType;
Property RESTDWIndexes [Aindex : Integer] : TRESTDWIndex Read GetBufIndex;
Property RESTDWIndexDefs[Aindex : Integer] : TRESTDWDatasetIndex Read GetBufIndexDef;
+ Property FieldAttrs : TFieldAttrs Read FFieldAttrs Write FFieldAttrs;
+ Property BlobFieldCount;
+ Property Records [Index : Integer] : TRESTDWMTMemoryRecord Read GetMemoryRecord;
published
- Property Capacity : Integer Read GetCapacity Write SetCapacity Default 0;
+ Property Capacity : Integer Read GetCapacity Write SetCapacity Default 0;
Property Active;
Property AutoCalcFields;
Property Filtered;
@@ -843,6 +736,24 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Property OnNewRecord;
Property OnPostError;
End;
+ TBlobStream = class(TMemoryStream)
+ private
+ FFieldIndex: Integer;
+ FRecNo: Integer;
+ FDataSet: TRESTDWMemtable;
+ public
+ destructor Destroy; Override;
+ end;
+ TStreamField = Class(TBlobField)
+ Private
+ FStream : TStream;
+ Function GetAsStream : TStream;
+ Public
+ Constructor Create(AOwner : TComponent); Override;
+ Destructor Destroy; Override;
+ Procedure Put;
+ Property Value : TStream Read GetAsStream;
+ End;
TRESTDWMTMemBlobStream = Class(TStream)
Private
FField : TBlobField;
@@ -856,8 +767,10 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
FPosition : Longint;
Function GetBlobSize : Longint;
Function GetBlobFromRecord(Field : TField) : TMemBlobData;
+ {$IFDEF FPC}
Procedure SetBlobFromRecord(Field : TField;
Value : TMemBlobData);
+ {$ENDIF}
Public
Constructor Create(Field : TBlobField;
Mode : TBlobStreamMode);
@@ -870,31 +783,6 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Origin: Word) : Longint;Override;
Procedure Truncate;
End;
- TRESTDWMTMemoryRecord = Class(TPersistent)
- Private
- FMemoryData : TRESTDWMemTable;
- FIndex,
- FID : Integer;
- FData : Pointer;
- FBlobs : TMemBlobArray;
- FIsNull : Boolean;
- Function GetIndex : Integer;
- Procedure SetMemoryData(Value : TRESTDWMemTable;
- UpdateParent : Boolean);
- Protected
- Procedure SetIndex (Value : Integer); Virtual;
- Public
- Constructor Create (MemoryData : TRESTDWMemTable); Virtual;
- Constructor CreateEx (MemoryData : TRESTDWMemTable;
- UpdateParent : Boolean); Virtual;
- Destructor Destroy;Override;
- Property MemoryData : TRESTDWMemTable Read FMemoryData;
- Property ID : Integer Read FID Write FID;
- Property Index : Integer Read GetIndex Write SetIndex;
- Property Data : Pointer Read FData Write FData;
- Property Blobs : TMemBlobArray Read FBlobs Write FBlobs;
- Property IsNull : Boolean Read FIsNull Write FIsNull;
- End;
TSortOrder = (soAsc, soDesc);
//Possible sorting case sensitivity values
// sensitive sorting - insensitive sorting
@@ -940,7 +828,7 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Type
{$IFNDEF FPC}
{$IF CompilerVersion > 24}
- TExtendedField = Class(TNumericField)
+ TRESTDWNumericField = Class(TNumericField)
Protected
Function GetAsExtended : Extended;
Function GetAsString : String; Override;
@@ -948,6 +836,8 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Procedure SetAsExtended(Const AValue : Extended);
Procedure SetAsString (Const AValue : String); Override;
Procedure SetVarValue (Const AValue : Variant); Override;
+ Procedure SetAsFloat (AValue: Double); Override;
+ Function GetAsFloat : Double;Override;
Private
vSize,
vPrecision : Integer;
@@ -957,12 +847,12 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
Property AsExtended : Extended Read GetAsExtended Write SetAsExtended;
{$ENDIF}
Property Value : Extended Read GetAsExtended Write SetAsExtended;
- Property Size : Integer Read vSize Write vSize;
Published
+ Property Size : Integer Read vSize Write vSize;
Property Precision : Integer Read vPrecision Write vPrecision;
End;
{$ELSE}
- TExtendedField = Class(TNumericField)
+ TRESTDWNumericField = Class(TNumericField)
Protected
{$IFDEF COMPILER17_UP}
Function GetAsExtended : Extended; Override;
@@ -971,43 +861,87 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
End;
{$IFEND}
{$ELSE}
- TExtendedField = Class(TNumericField)
+ TRESTDWNumericField = Class(TNumericField)
Private
vSize,
vPrecision : Integer;
Procedure SetAsExtended(Const AValue : Extended);
Protected
- Function GetAsString : String; Override;
+ Function GetAsString : String; Override;
Procedure SetAsString (Const AValue : String); Override;
-// Function GetAsVariant : Variant; Override;
+ Procedure SetAsFloat (AValue: Double); Override;
+ Function GetAsFloat : Double; Override;
+ Procedure SetVarValue (Const AValue : Variant); Override;
+ Function GetAsVariant : Variant; Override;
Public
Constructor Create(AOwner: TComponent); override;
- Property Size : Integer Read vSize Write vSize;
Published
+ Property Size : Integer Read vSize Write vSize;
Property Precision : Integer Read vPrecision Write vPrecision;
End;
{$ENDIF}
{$IFNDEF FPC}
- TSQLTimeStampOffsetField = Class(TSQLTimeStampField)
- Protected
- {$IF CompilerVersion < 25}
- Procedure GetText (Var Text : String;
- DisplayText : Boolean); Override;
- {$IFEND}
- {$IFDEF FPC}
- Procedure SetAsString(const Value: string); override;
- {$ELSE}
+ TRESTDWSQLTimeStampOffsetField = Class(TSQLTimeStampField)
+ Protected
+ {$IF CompilerVersion < 25}
+ Procedure GetText (Var Text : String;
+ DisplayText : Boolean); Override;
+ {$IFEND}
+ {$IFDEF FPC}
+ Procedure SetAsString(const Value: string); override;
+ {$ELSE}
{$IF CompilerVersion < 25}
- Procedure SetAsString(const Value: string); override;
+ Procedure SetAsString(const Value: string); override;
{$ELSE}
- Procedure SetAsString(Const AValue : String); Override;
+ Procedure SetAsString(Const AValue : String); Override;
{$IFEND}
- {$ENDIF}
- End;
+ {$ENDIF}
+ Public
+ Constructor Create(AOwner: TComponent); override;
+ End;
{$ENDIF}
+ Type
+ TStringFieldRESTDW = Class(TStringField)
+ Protected
+ Function CopyToNull(aValue : String) : String;Overload;
+ Function CopyToNull(aValue : TRESTDWBytes) : TRESTDWBytes;Overload;
+ Function GetAsString : String; Override;
+ {$IFNDEF FPC}
+ {$IFNDEF NEXTGEN}
+ Function GetValue(var aValue: AnsiString): Boolean;
+ Function GetAsAnsiString : AnsiString; override;
+ {$ELSE}
+ Function GetValue(var aValue: String): Boolean;
+ {$ENDIF !NEXTGEN}
+ {$ELSE}
+ Function GetAsAnsiString : AnsiString; override;
+ Function GetValue(var aValue: String): Boolean;
+ {$ENDIF}
+ Function GetAsVariant : Variant; Override;
+// Procedure GetText (Var Text : String;
+// DisplayText : Boolean); Override;
+ Procedure SetAsAnsiString(const AValue: AnsiString); override;
+ Procedure SetAsString (Const AValue : String); Override;
+ Public
+ Constructor Create(AOwner: TComponent); override;
+ End;
+
+{$IFDEF SUPPORTS_CLASS_HELPERS}
+ TStringFieldHelper = Class helper For TStringField
+ Protected
+ Function GetAsString : String;
+ {$IFNDEF NEXTGEN}
+ Function GetAsAnsiString : AnsiString;
+ {$ENDIF !NEXTGEN}
+ Function GetAsVariant : Variant;
+ Procedure SetAsAnsiString(const AValue: AnsiString);
+ Procedure SetAsString (Const AValue : String);
+ End;
+{$ENDIF}
+
Var
DefaultFieldClasses : Array[TFieldType] Of TFieldClass = (nil, { ftUnknown }
- TStringField, { ftString }
+ TStringFieldRESTDW, { ftString }
TSmallintField, { ftSmallint }
TIntegerField, { ftInteger }
TWordField, { ftWord }
@@ -1029,51 +963,59 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
TBlobField, { ftDBaseOle }
TBlobField, { ftTypedBinary }
nil, { ftCursor }
- TStringField, { ftFixedChar }
+ TStringFieldRESTDW, { ftFixedChar }
TWideStringField, { ftWideString }
TLargeIntField, { ftLargeInt }
{$IFNDEF FPC}TADTField,{ ftADT }{$ELSE}Nil,{$ENDIF}
{$IFNDEF FPC}TArrayField,{ ftArray }{$ELSE}Nil,{$ENDIF}
{$IFNDEF FPC}TReferenceField,{ ftReference }{$ELSE}Nil,{$ENDIF}
{$IFNDEF FPC}TDataSetField,{ ftDataSet }{$ELSE}Nil,{$ENDIF}
- TBlobField, { ftOraBlob }
- TMemoField, { ftOraClob }
+ TStreamField, //TBlobField, { ftOraBlob }
+ TStreamField, //TMemoField, { ftOraClob }
TVariantField, { ftVariant }
{$IFNDEF FPC}TInterfaceField,{ ftInterface }{$ELSE}Nil,{$ENDIF}
{$IFNDEF FPC}TIDispatchField,{ ftIDispatch }{$ELSE}Nil,{$ENDIF}
TGuidField,{ ftGuid }
{$IFNDEF FPC}TSQLTimeStampField, { ftTimeStamp }{$ELSE}Nil,{$ENDIF}
- TExtendedField{ ftFMTBcd }
+ TRESTDWNumericField{ ftFMTBcd }
// {$IFNDEF FPC}TFMTBcdField{$ELSE}TExtendedField{$ENDIF}{ ftFMTBcd }
{$IFNDEF FPC}
{$IFDEF DELPHI2010UP},
TWideStringField, { ftFixedWideChar }
- TWideMemoField, { ftWideMemo }
+ TStreamField, //TWideMemoField, { ftWideMemo }
TSQLTimeStampField, { ftOraTimeStamp }
- TStringField { ftOraInterval }
+ TStringFieldRESTDW { ftOraInterval }
{$ENDIF}
{$ELSE},
- TStringField { ftOraInterval }
+ TStringFieldRESTDW { ftOraInterval }
{$ENDIF}
{$IFNDEF FPC}
{$IFDEF DELPHIXEUP},
TLongWordField, { ftLongWord }
TShortintField, { ftShortint }
TByteField, { ftByte }
- TExtendedField,
+ TRESTDWNumericField,
nil, { ftConnection }
nil, { ftParams }
- TBlobField { ftStream }
+ TStreamField //TBlobField { ftStream }
{$ENDIF}
{$ELSE},
- TBlobField { ftStream }
+ TStreamField //TBlobField { ftStream }
{$ENDIF}
{$IFDEF DELPHIXE2UP},
TSQLTimeStampOffsetField, { ftTimeStampOffset }
nil, { ftObject }
- TSingleField { ftSingle }{$ENDIF});
+ TSingleField { ftSingle }
+ {$ENDIF}
+ {$IFDEF DELPHI2025UP},
+ TLargeIntField
+ {$ENDIF});
+
+ Procedure CalcDataSize(FieldDef : TFieldDef; Var DataSize: Integer);Overload;
+ Procedure CalcDataSize(Field : TField; Var DataSize: Integer);Overload;
+
Implementation
Uses
@@ -1084,8 +1026,9 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex)
FMTBcd,
{$IFDEF RESTDWVCL}uRESTDWMemVCLUtils,{$ENDIF}
uRESTDWMemResources,
- uRESTDWTools, uRESTDWBasicTypes, uRESTDWStorageBin
- {$IFNDEF FPC}, SqlTimSt{$ENDIF};
+ uRESTDWTools, uRESTDWStorageBin
+ {$IFNDEF FPC}, SqlTimSt{$ENDIF},
+ uRESTDWBasicTypes;
Const
GuidSize = 38;
@@ -1172,9 +1115,10 @@ TMemBookmarkInfo = record
Result := Size;
vDWFieldType := FieldTypeToDWFieldType(FieldType); //Gledston - Alterei a partir deste ponto
Case vDWFieldType of
- {$IFNDEF FPC}
- dwftString : Inc (Result, Size);
- {$ENDIF}
+ dwftString : Begin
+// Inc(Result, Size); //2 Bytes de Boolean
+ Exit;
+ End;
dwftSmallint : Result := SizeOf(Smallint);
dwftInteger : Result := SizeOf(Integer);
dwftWord : Result := SizeOf(Word);
@@ -1198,13 +1142,13 @@ TMemBookmarkInfo = record
Result := {$IFDEF FPC}SizeOf(Double);{$ELSE}SizeOf(TSQLTimeStamp);{$ENDIF}
End;
dwftAutoInc : Result := SizeOf(Longint);
- dwftLargeint : Result := {$IFDEF FPC}8{$ELSE}{$IF CompilerVersion <= 22}8{$ELSE}64{$IFEND}{$ENDIF}; //Field Size é 64 Bits
+ dwftLargeint : Result := SizeOf(Longint); //{$IFDEF FPC}8{$ELSE}{$IF CompilerVersion <= 22}8{$ELSE}64{$IFEND}{$ENDIF}; //Field Size é 64 Bits
dwftBCD, //Result := SizeOf(TBcd);
dwftFMTBCD : Result := SizeOf(Currency);
dwftTimeStampOffset : Begin
- Inc(Result,SizeOf(Double));
- Inc(Result,SizeOf(Byte));
- Inc(Result,SizeOf(Byte));
+ Inc(Result, SizeOf(Double));
+ Inc(Result, SizeOf(Byte));
+ Inc(Result, SizeOf(Byte));
End;
{$IFDEF COMPILER10_UP}
dwftOraTimestamp : Result := SizeOf(TSQLTimeStamp);
@@ -1218,11 +1162,21 @@ TMemBookmarkInfo = record
{$IFEND}
{$ENDIF}
{$IFNDEF FPC}
- dwftExtended : Result := SizeOf(DWLongDouble);
+ dwftExtended : Begin
+ Result := SizeOf(DWLongDouble);
+ If Result < Size Then
+ Begin
+ Result := Size;
+ Exit;
+ End;
+ End;
{$ENDIF}
dwftADT : Result := 0;
dwftFixedChar : Inc(Result);
- dwftWideString : Result := Result * SizeOf(WideChar);
+ dwftWideString : Begin
+ Result := Result * SizeOf(WideChar);
+ Exit;
+ End;
dwftVariant : Result := SizeOf(Variant);
dwftGuid : Result := GuidSize;
dwftWideMemo,
@@ -1256,7 +1210,12 @@ TMemBookmarkInfo = record
Procedure CalcDataSize(Field: TField; Var DataSize: Integer);Overload;
Begin
If Field.datatype in ftSupported - ftBlobTypes then
- Inc(DataSize, CalcFieldLen(Field.datatype, Field.Size));
+ Begin
+ If Field is TRESTDWNumericField Then
+ Inc(DataSize, CalcFieldLen(Field.datatype, TRESTDWNumericField(Field).Size))
+ Else
+ Inc(DataSize, CalcFieldLen(Field.datatype, Field.Size));
+ End;
If Field.datatype in ftBlobTypes then
Inc(DataSize, CalcFieldLen(Field.datatype, Field.Size));
End;
@@ -1305,77 +1264,116 @@ TMemBookmarkInfo = record
DatabaseErrorFmt(Msg, Args);
End;
-// === { TRESTDWMTMemoryRecord } ====================================================
-Constructor TRESTDWMTMemoryRecord.Create(MemoryData: TRESTDWMemTable);
+{$IFNDEF FPC}
+{$IF CompilerVersion > 24}
+Function TRESTDWNumericField.GetAsExtended: Extended;
+Var
+ x : DWLongDouble;
+ pData : TRESTDWMTValueBuffer;
Begin
- FIsNull := True;
- FIndex := -1;
- CreateEx(MemoryData, True);
+ {$IFNDEF FPC}
+ {$IF Defined(HAS_FMX)}
+ SetLength(pData, SizeOf(Extended));
+ If not GetData(pData, True) then
+ Result := NaN
+ Else
+ Result := TBitConverter.InTo(pData);
+ {$ELSE}
+ //TODO Internal
+ x := 0;
+ If TRESTDWMemtable(Dataset).RecNo > 0 Then
+ Begin
+ SetLength(pData, SizeOf(x) +1);
+ If Not TRESTDWMemtable(Dataset).InternalGetFieldData(Self, pData, Length(pData)) then
+ Result := NaN
+ Else
+ Begin
+ Move(pData[0], Pointer(@x)^, SizeOf(x));
+ Result := x;
+ End;
+ SetLength(pData, 0);
+ End;
+ {$IFEND}
+ {$ELSE}
+ If not GetData(@Result, True) then
+ Result := NaN;
+ {$ENDIF}
End;
-Constructor TRESTDWMTMemoryRecord.CreateEx(MemoryData: TRESTDWMemTable; UpdateParent: Boolean);
+Function TRESTDWNumericField.GetAsFloat : Double;
Begin
- Inherited Create;
- SetMemoryData(MemoryData, UpdateParent);
+ Result := GetAsExtended;
+// Result := _RealSupportManager._VarFromReal(GetAsExtended);
End;
-Destructor TRESTDWMTMemoryRecord.Destroy;
+Procedure TRESTDWNumericField.SetAsExtended(Const AValue : Extended);
+Var
+ pData : TRESTDWMTValueBuffer;
+ x : DWLongDouble;
Begin
- SetMemoryData(Nil, False);
- Finalize(FBlobs);
- SetLength(FBlobs, 0);
- Inherited Destroy;
+ {$IFNDEF FPC}
+ {$IF Defined(HAS_FMX)}
+ {$IF Defined(HAS_UTF8)}
+ SetData(TValueBuffer(@AValue), True);
+ {$ELSE}
+ SetData(@AValue, True);
+ {$IFEND}
+ {$ELSE}
+ SetLength(pData, SizeOf(x));
+ x := aValue;
+ Move(Pointer(@x)^, pData[0], SizeOf(x));
+ TRESTDWMemtable(Dataset).InternalSetFieldData(Self, pData, TRESTDWMTValueBuffer(Pointer(@pData)^));
+// SetData(TValueBuffer(@AValue), True);
+ {$IFEND}
+ {$ELSE}
+ SetData(@AValue, True);
+ {$ENDIF}
End;
-{$IFNDEF FPC}
{$IFDEF SUPPORTS_CLASS_HELPERS}
-{$IFNDEF COMPILER10_UP}
-Function TExtendedFieldHelper.GetAsExtendedHelper: Extended;
+Function TStringFieldHelper.GetAsAnsiString : AnsiString;
+Var
+ Data : TValueBuffer;
Begin
- If Self Is TExtendedField Then
- Result := TExtendedField(Self).GetAsExtended
- Else
- Result := Self.AsFloat;
+ SetLength(Data, Size);
+ If GetData(Data, True) then
+ Result := Copy(BytesToString(TRESTDWBytes(Data)), InitStrPos, Size);
+ SetLength(Data, 0);
End;
-Procedure TExtendedFieldHelper.SetAsExtendedHelper(Const Value: Extended);
+Function TStringFieldHelper.GetAsVariant : Variant;
Begin
- If Self is TExtendedField then
- TExtendedField(Self).SetAsExtended(Value)
- Else
- Self.AsFloat := Value;
+ Result := GetAsString;
End;
-{$ENDIF}
-{$ENDIF}
-{$IF CompilerVersion > 24}
-Function TExtendedField.GetAsExtended: Extended;
+
+Function TStringFieldHelper.GetAsString : String;
Var
Data : TValueBuffer;
+Begin
+ SetLength(Data, Size);
+ If GetData(Data, True) then
+ Result := Copy(BytesToString(TRESTDWBytes(Data)), InitStrPos, Size);
+ SetLength(Data, 0);
+End;
+
+Procedure TStringFieldHelper.SetAsAnsiString(const AValue: AnsiString);
Begin
{$IFNDEF FPC}
{$IF Defined(HAS_FMX)}
- SetLength(Data, SizeOf(Extended));
- If not GetData(Data, True) then
- Result := NaN
- Else
- Result := TBitConverter.InTo(Data);
+ {$IF Defined(HAS_UTF8)}
+ SetData(TValueBuffer(@AValue), True);
+ {$ELSE}
+ SetData(@AValue, True);
+ {$IFEND}
{$ELSE}
- If not GetData(@Result, True) then
- Result := NaN;
+ SetData(@AValue, True);
{$IFEND}
{$ELSE}
- If not GetData(@Result, True) then
- Result := NaN;
+ SetData(@AValue, True);
{$ENDIF}
End;
-Function TExtendedField.GetAsVariant : Variant;
-Begin
- Result := GetAsExtended;
-// Result := _RealSupportManager._VarFromReal(GetAsExtended);
-End;
-
-Procedure TExtendedField.SetAsExtended(Const AValue : Extended);
+Procedure TStringFieldHelper.SetAsString(Const AValue : String);
Begin
{$IFNDEF FPC}
{$IF Defined(HAS_FMX)}
@@ -1391,8 +1389,9 @@ TMemBookmarkInfo = record
SetData(@AValue, True);
{$ENDIF}
End;
+{$ENDIF}
-Procedure TExtendedField.SetAsString(Const AValue : String);
+Procedure TRESTDWNumericField.SetAsString(Const AValue : String);
Var
x : Extended;
Begin
@@ -1405,36 +1404,188 @@ TMemBookmarkInfo = record
End;
End;
-Procedure TExtendedField.SetVarValue(Const AValue : Variant);
+{$ELSE}
+Function TRESTDWNumericField.GetAsVariant : Variant;
+Begin
+ Result := Extended(Value);//_RealSupportManager._VarFromReal(Value);
+End;
+{$IFEND}
+{$ENDIF}
+
+Function TRESTDWNumericField.GetAsVariant : Variant;
+Begin
+ Result := {$IFDEF FPC}GetAsFloat{$ELSE}GetAsExtended{$ENDIF};
+End;
+
+Procedure TRESTDWNumericField.SetVarValue(Const AValue : Variant);
+Begin
+ SetAsExtended(AValue);
+End;
+
+Procedure TRESTDWNumericField.SetAsFloat (AValue: Double);
+Begin
+ SetAsExtended(AValue);
+End;
+
+Constructor TRESTDWNumericField.Create(AOwner: TComponent);
+Begin
+ Inherited;
+ {$IFNDEF FPC}
+ SetDataType(ftExtended);
+ {$ELSE}
+ SetDataType(ftFMTBcd);
+ {$ENDIF}
+ vSize := 19;
+ vPrecision := 8;
+End;
+
+Function TStringfieldRESTDW.GetAsAnsiString : AnsiString;
+Var
+ Data : TValueBuffer;
+Begin
+ {$IFNDEF FPC}
+ SetLength(Data, Size);
+ If GetData(Data, True) then
+ Result := BytesToString(TRESTDWBytes(Data));
+ SetLength(Data, 0);
+ {$ELSE}
+ Result := GetAsString;
+ {$ENDIF}
+End;
+
+Function TStringfieldRESTDW.GetAsVariant : Variant;
+Begin
+ Result := GetAsString;
+End;
+
+{$IFNDEF FPC}
+ {$IFNDEF NEXTGEN}
+ Function TStringfieldRESTDW.GetValue(var aValue: AnsiString): Boolean;
+ {$ELSE}
+ Function TStringfieldRESTDW.GetValue(var aValue: String): Boolean;
+ {$ENDIF !NEXTGEN}
+{$ELSE}
+Function TStringfieldRESTDW.GetValue(var aValue: String): Boolean;
+{$ENDIF}
+Begin
+ Result := False;
+ Try
+ aValue := GetAsString;
+ Result := True;
+ Except
+
+ End;
+End;
+
+Function TStringfieldRESTDW.CopyToNull(aValue : TRESTDWBytes) : TRESTDWBytes;
+Var
+ I : Integer;
+Begin
+ SetLength(Result, 0);
+ For I := 0 To Length(aValue) - 1 Do
+ Begin
+ If aValue[I] <> 0 Then
+ Begin
+ SetLength(Result, Length(Result) +1);
+ Result[I] := aValue[I];
+ End
+ Else
+ Break;
+ End;
+End;
+
+Function TStringfieldRESTDW.CopyToNull(aValue : String) : String;
+Var
+ I : Integer;
+Begin
+ Result := '';
+ For I := InitStrPos To Length(aValue) - FinalStrPos Do
+ Begin
+ If aValue[I] <> #0 Then
+ Result := Result + aValue[I];
+ End;
+End;
+
+Function TStringfieldRESTDW.GetAsString : String;
+Var
+ aData,
+ bData : TRESTDWBytes;
+Begin
+ Try
+ SetLength(aData, Size);
+ If TRESTDWMemtable(Dataset).InternalGetFieldData(Self, TRESTDWMTValueBuffer(aData), Size) then
+ Begin
+ bData := CopyToNull(aData);
+ Result := BytesToString(bData);
+ SetLength(bData, 0);
+ End;
+ SetLength(aData, 0);
+ Finally
+ End;
+End;
+
+Procedure TStringfieldRESTDW.SetAsAnsiString(const AValue: AnsiString);
+Var
+ pData : TRESTDWBytes;
+ X : String;
+ I : Integer;
+Begin
+ {$IFNDEF FPC}
+ {$IF Defined(HAS_FMX)}
+ {$IF Defined(HAS_UTF8)}
+ SetData(TValueBuffer(@AValue), True);
+ {$ELSE}
+ SetData(@AValue, True);
+ {$IFEND}
+ {$ELSE}
+ SetData(@AValue, True);
+ {$IFEND}
+ {$ELSE}
+ Inherited SetAsString(AValue);
+{
+ SetLength(pData, Size);
+ x := aValue;
+ I := Length(X);
+ Move(Pointer(@x)^, pData[0], I);
+ TRESTDWMemtable(Dataset).InternalSetFieldData(Self, @pData, TRESTDWMTValueBuffer(Pointer(@pData)^));
+}
+ {$ENDIF}
+End;
+
+Constructor TStringfieldRESTDW.Create(AOwner: TComponent);
Begin
- SetAsExtended(AValue);
-End;
-{$ELSE}
-Function TExtendedField.GetAsVariant : Variant;
-Begin
- Result := Extended(Value);//_RealSupportManager._VarFromReal(Value);
+ Inherited;
+ SetDataType(ftString);
End;
-{$IFEND}
-{$ENDIF}
-Constructor TExtendedField.Create(AOwner: TComponent);
+
+Procedure TStringfieldRESTDW.SetAsString(Const AValue : String);
+Var
+ ValueBuffer : TRESTDWBytes;
Begin
- Inherited;
{$IFNDEF FPC}
- SetDataType(ftExtended);
+ {$IF Defined(HAS_FMX)}
+ {$IF Defined(HAS_UTF8)}
+ SetData(TValueBuffer(@AValue), True);
+ {$ELSE}
+ SetData(@AValue, True);
+ {$IFEND}
+ {$ELSE}
+ ValueBuffer := StringToBytes(AValue);
+ SetData(ValueBuffer, True);
+ SetLength(ValueBuffer, 0);
+ {$IFEND}
{$ELSE}
- SetDataType(ftFMTBcd);
+ SetAsAnsiString(AValue);
{$ENDIF}
- vSize := 19;
- vPrecision := 8;
End;
{$IFDEF FPC}
-Procedure TExtendedField.SetAsExtended(Const AValue : Extended);
+Procedure TRESTDWNumericField.SetAsExtended(Const AValue : Extended);
Begin
SetData(@AValue, True);
End;
-Procedure TExtendedField.SetAsString(Const AValue : String);
+Procedure TRESTDWNumericField.SetAsString(Const AValue : String);
Var
x : Extended;
Begin
@@ -1448,12 +1599,15 @@ TMemBookmarkInfo = record
End;
{$ENDIF}
-Function TExtendedField.GetAsString: string;
-Var
- x : Extended;
-{$IFDEF COMPILER17_UP}
- Data: TValueBuffer;
+{$IFDEF FPC}
+Function TRESTDWNumericField.GetAsFloat : Double;
+Begin
+ If not GetData(@Result, True) then
+ Result := NaN;
+End;
{$ENDIF}
+
+Function TRESTDWNumericField.GetAsString: string;
Function BuildMask(Value : Double;
aPrecision : Integer) : String;
Var
@@ -1467,21 +1621,16 @@ TMemBookmarkInfo = record
vString := vString + '0';
Result := FormatFloat(vString, Value);
End;
+Var
+ x : DWLongDouble;
Begin
- {$IFNDEF COMPILER17_UP}
- If GetData(@x, True) then
- Begin
- {$ELSE}
- SetLength(Data, SizeOf(Extended));
- If GetData(Data, True) then
+{$IFDEF FPC}
+ x := GetAsFloat;
+{$ELSE}
+ x := GetAsExtended;
+{$ENDIF}
+ If Not isNull then
Begin
- {$IF CompilerVersion > 28}
- x := TBitConverter.InTo(Data);
- {$ELSE}
- x := TBitConverter.ToExtended(Data);
- {$IFEND}
-// x := TBitConverter.InTo(Data);
- {$ENDIF}
If (Length(FloatToStr(x)) > vSize) Then
Result := FloatToStrF(x, ffGeneral, vSize, vPrecision)
Else If (Length(FloatToStr(Frac(x))) > vPrecision) Then
@@ -1497,7 +1646,7 @@ TMemBookmarkInfo = record
{$IFNDEF FPC}
{$IF CompilerVersion < 25}
-Procedure TSQLTimeStampOffsetField.GetText(var Text: string;
+Procedure TRESTDWSQLTimeStampOffsetField.GetText(var Text: string;
DisplayText: Boolean);
Var
S : String;
@@ -1518,10 +1667,19 @@ TMemBookmarkInfo = record
{$ENDIF}
{$IFNDEF FPC}
+Constructor TRESTDWSQLTimeStampOffsetField.Create(AOwner: TComponent);
+Begin
+ Inherited;
+ {$IFNDEF FPC}
+ SetDataType(ftTimeStampOffset);
+ {$ELSE}
+ SetDataType(ftTimeStamp);
+ {$ENDIF}
+End;
{$IF CompilerVersion < 25}
-Procedure TSQLTimeStampOffsetField.SetAsString(Const Value: string);
+Procedure TRESTDWSQLTimeStampOffsetField.SetAsString(Const Value: string);
{$ELSE}
-Procedure TSQLTimeStampOffsetField.SetAsString(Const AValue: string);
+Procedure TRESTDWSQLTimeStampOffsetField.SetAsString(Const AValue: string);
{$IFEND}
Var
S : String;
@@ -1540,66 +1698,7 @@ TMemBookmarkInfo = record
End;
{$ENDIF}
-Function TRESTDWMTMemoryRecord.GetIndex: Integer;
-Begin
- // If FMemoryData <> nil then
- // Result := FMemoryData.FRecords.IndexOf(Self)
- // Else
- Result := FIndex;
-End;
-
-Procedure TRESTDWMTMemoryRecord.SetMemoryData(Value: TRESTDWMemTable; UpdateParent: Boolean);
-var
- I: Integer;
- DataSize: Integer;
-Begin
- If FMemoryData <> Value then
- Begin
- If FMemoryData <> nil then
- Begin
- If FMemoryData.BlobFieldCount > 0 Then
- Finalize(FBlobs[0], FMemoryData.BlobFieldCount);
- FMemoryData.FRecords.Remove(Self);
- SetLength(FBlobs, 0);
- {$IFDEF FPC}
- ReallocMem(FData, 0);
- {$ELSE}
- FreeMem(FData, SizeOf(FData));
-// ReallocMem(FData, 0);
- {$ENDIF}
- FMemoryData := Nil;
- End;
- If Value <> nil then
- Begin
- If UpdateParent then
- Begin
- Value.FRecords.Add(Self);
- Inc(Value.FLastID);
- FID := Value.FLastID;
- End;
- FMemoryData := Value;
- If Value.BlobFieldCount > 0 then
- Begin
- SetLength(FBlobs, 0);
- SetLength(FBlobs, Value.BlobFieldCount);
- End;
- DataSize := 0;
- For I := 0 to Value.Fields.Count - 1 do
- CalcDataSize(Value.Fields[I], DataSize);
- ReallocMem(FData, DataSize);
- End;
- End;
-End;
-Procedure TRESTDWMTMemoryRecord.SetIndex(Value: Integer);
-var
- CurIndex: Integer;
-Begin
- CurIndex := GetIndex;
- If (CurIndex >= 0) and (CurIndex <> Value) then
- FMemoryData.FRecords.Move(CurIndex, Value);
- FIndex := Value;
-End;
// === { TRESTDWMemTable } ======================================================
// Function TRESTDWMemTable.FieldByName(const FieldName: string): TField;
// Begin
@@ -1614,6 +1713,7 @@ TMemBookmarkInfo = record
constructor TRESTDWMemTable.Create(AOwner: TComponent);
Begin
Inherited Create(AOwner);
+ SetLength(FFieldAttrs, 0);
FRecordPos := -1;
FRecordFilterPos := -1;
aFilterRecs := FRecordFilterPos;
@@ -1638,14 +1738,13 @@ constructor TRESTDWMemTable.Create(AOwner: TComponent);
FFetch := False;
End;
-destructor TRESTDWMemTable.Destroy;
+Destructor TRESTDWMemTable.Destroy;
var
I : Integer;
PFValues : TPVariant;
Begin
If Active then
Close;
- Inherited Destroy;
If FFilterParser <> nil then
FreeAndNil(FFilterParser);
{$IFNDEF FPC}
@@ -1675,6 +1774,7 @@ destructor TRESTDWMemTable.Destroy;
//FBlobOfs := 0;
If Assigned(FDataSet) Then
FreeAndNil(FDataSet);
+ Inherited Destroy;
End;
function TRESTDWMemTable.CompareFields(Data1, Data2: Pointer;
@@ -1795,7 +1895,7 @@ procedure TRESTDWMemTable.SetCapacity(Value: Integer);
function TRESTDWMemTable.AddRecord: TRESTDWMTMemoryRecord;
Begin
- Result := TRESTDWMTMemoryRecord.Create(Self);
+ Result := TRESTDWMTMemoryRecord.Create(TRESTDWMemTableAE(Self));
End;
function TRESTDWMemTable.FindRecordID(ID: Integer): TRESTDWMTMemoryRecord;
@@ -1820,8 +1920,7 @@ function TRESTDWMemTable.InsertRecord(Index: Integer): TRESTDWMTMemoryRecord;
function TRESTDWMemTable.GetMemoryRecord(Index: Integer): TRESTDWMTMemoryRecord;
Begin
- Result := TRESTDWMTMemoryRecord(FRecords[Index]);
-// Result := TRESTDWMTMemoryRecord(TRecordList(Pointer(@FRecords)^)[Index]);
+ Result := TRESTDWMTMemoryRecord(FRecords[Index]);
End;
Procedure TRESTDWMemTable.CalcOffSets;
@@ -1918,14 +2017,14 @@ function TRESTDWMemTable.GetMemoryRecord(Index: Integer): TRESTDWMTMemoryRecord;
VFDef.Required := Fields[I].Required;
Case Integer(Fields[I].DataType) of
dwftFloat,
- dwftCurrency : VFDef.Precision := TExtendedField(Fields[I]).Precision;
+ dwftCurrency : VFDef.Precision := TRESTDWNumericField(Fields[I]).Precision;
dwftBCD,
dwftFMTBcd : Begin
{$IFNDEF FPC}
VFDef.Size := 0;
VFDef.Precision := 0;
{$ELSE}
- VFDef.Precision := TExtendedField(Fields[I]).Precision;
+ VFDef.Precision := TRESTDWNumericField(Fields[I]).Precision;
{$ENDIF}
End;
{
@@ -2009,13 +2108,7 @@ function TRESTDWMemTable.FindFieldData(Buffer: Pointer; Field: TField): Pointer;
{$ENDIF}
End
Else
- Begin
- {$IFDEF FPC}
- Result := Pointer(PRESTDWMTMemBuffer(Buffer + FOffsets[Index]));
- {$ELSE}
- Result := Pointer(PRESTDWMTMemBuffer(Buffer) + FOffsets[Index]);
- {$ENDIF}
- End;
+ Result := Pointer(PRESTDWMTMemBuffer(Buffer) + FOffsets[Index]);
End;
End;
@@ -2033,8 +2126,8 @@ procedure TRESTDWMemTable.InitBufferPointers(GetProps: Boolean);
If GetProps then
FRecordSize := CalcRecordSize;
FBookmarkOfs := FRecordSize + sizeof(int64); //o int64 para adicionar o size do blob. o calcfieldssize vem zero //CalcFieldsSize;
- FBlobOfs := FBookmarkOfs + SizeOf(TMemBookmarkInfo);
- FRecBufSize := FBlobOfs + BlobFieldCount * SizeOf(Pointer);
+ FBlobOfs := FBookmarkOfs + SizeOf(TMemBookmarkInfo);
+ FRecBufSize := FBlobOfs + BlobFieldCount * SizeOf(Pointer);
End;
procedure TRESTDWMemTable.ClearRecords;
@@ -2075,12 +2168,14 @@ procedure TRESTDWMemTable.FreeRecordBuffer(var Buffer: TRecordBuffer);
FreeMem(Buffer);
{$ELSE}
{$IFDEF DELPHI10_0UP}
- FreeMem(Buffer, 0);
+// FreeMem(Buffer, 0);
+ ReallocMem(Buffer, 0);
{$ELSE}
StrDispose(Buffer);
{$ENDIF DELPHI10_0UP}
{$ENDIF}
- Buffer := nil;
+ Inherited FreeRecordBuffer(Buffer);
+ Buffer := Nil;
End;
procedure TRESTDWMemTable.ClearCalcFields(Buffer: TRecordBuffer);
@@ -2216,9 +2311,10 @@ procedure TRESTDWMemTable.InitRecord(Buffer: TRecordBuffer);
function TRESTDWMemTable.GetCurrentRecord(Buffer: TRecordBuffer): Boolean;
Begin
Result := False;
- If not IsEmpty and (GetBookmarkFlag(ActiveBuffer) = bfCurrent) then
+ If not IsEmpty and (GetBookmarkFlag(ActiveBuffer) = bfCurrent) Then
Begin
UpdateCursorPos;
+ New(Buffer);
If (FRecordPos >= 0) and (FRecordPos < RecordCount) then
Begin
Move(Records[FRecordPos].Data^,
@@ -2404,21 +2500,23 @@ function TRESTDWMemTable.GetRecordSize: Word;
Result := FRecordSize;
End;
-function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
- ): Boolean;
+Function TRESTDWMemTable.GetActiveRecBuf(Var RecBuf : PRESTDWMTMemBuffer): Boolean;
Begin
case State of
dsBrowse:
If IsEmpty then
RecBuf := nil
Else
- RecBuf := PRESTDWMTMemBuffer(ActiveBuffer);
+ RecBuf := PRESTDWMTMemBuffer(ActiveBuffer);
dsEdit, dsInsert:
RecBuf := PRESTDWMTMemBuffer(ActiveBuffer);
dsCalcFields:
RecBuf := PRESTDWMTMemBuffer(TempBuffer);//PRESTDWMTMemBuffer(ActiveBuffer);//PRESTDWMTMemBuffer(CalcBuffer);
dsFilter:
RecBuf := PRESTDWMTMemBuffer(TempBuffer);
+ {$IFDEF FPC}
+ dsBlockRead : RecBuf := PRESTDWMTMemBuffer(ActiveBuffer);
+ {$ENDIF}
Else
RecBuf := nil;
End;
@@ -2426,7 +2524,8 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
End;
Function TRESTDWMemTable.InternalGetFieldData(Field : TField;
- Var Buffer : TRESTDWMTValueBuffer) : Boolean;
+ Var Buffer : TRESTDWMTValueBuffer;
+ cSize : Integer = 0) : Boolean;
Var
aNullData : Boolean;
RecBuf : PRESTDWMTMemBuffer;
@@ -2449,6 +2548,19 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
vDateTimeInt : DWInteger;
vDateTimeRec : TDateTimeRec;
vDWFieldType : Byte;
+ Function CountToNull(Const aBytes : TRESTDWBytes) : Integer;
+ Var
+ I : Integer;
+ Begin
+ Result := 0;
+ For I := 0 To Length(aBytes) -1 Do
+ Begin
+ If aBytes[I] <> 0 Then
+ Inc(Result)
+ Else
+ Break;
+ End;
+ End;
Begin
Result := False;
If Not GetActiveRecBuf(RecBuf) Then
@@ -2463,7 +2575,10 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Result := (Field is TBlobField);
If Not Result Then
Result := Data <> Nil;
- cLen := GetCalcFieldLen(Field.datatype, Field.Size);
+ If (cSize > 0) Then
+ cLen := cSize
+ Else
+ cLen := GetCalcFieldLen(Field.datatype, Field.Size);
{$IFNDEF FPC}
{$IF CompilerVersion >= 22}
If Field.datatype = ftSingle Then
@@ -2484,19 +2599,37 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Move(Data^, aDataBytes[0], cLen);
Result := Result and (not (Char(aDataBytes[0]) = #0));
aNullData := Not Result;
+ {$IFNDEF FPC}
+ If Not(State in [dsEdit, dsInsert]) Then
+ Begin
+ If aNullData Then
+ Begin
+ If Length(TRESTDWBytes(Buffer)) > 0 Then
+ Begin
+ If (Not (Char(TRESTDWBytes(Buffer)[0]) = #0)) Then
+ Begin
+ Move(TRESTDWBytes(Buffer)[0], aDataBytes[0], cLen);
+ Result := (not (Char(TRESTDWBytes(Buffer)[0]) = #0));
+ aNullData := Not Result;
+ End;
+ End;
+ End;
+ End;
+ {$ENDIF}
End;
ftBoolean : Begin
{$IFNDEF FPC}
{$IF CompilerVersion > 21}
If Not (Field.datatype in [ftByte, ftShortint]) then
Begin
- Result := Not(Result);
+ Result := False;
If Not(Result) then
Begin
+ cLen := SizeOf(Boolean);
aNullData := False;
SetLength(aDataBytes, cLen);
Move(Data^, aDataBytes[0], cLen);
- Move(aDataBytes[0], Pointer(@aNullData)^, SizeOf(Boolean));
+// Move(aDataBytes[0], Pointer(@aNullData)^, SizeOf(Boolean));
Result := Not(aNullData);
End;
End
@@ -2537,10 +2670,18 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
ftDate,
ftTime,
ftDateTime : Begin
- //TODO XyberX O dado DateTime deve ser convertido em DateTimeREC no ponteiro
- SetLength(aDataBytes, 1);
- Move(Data^, aDataBytes[0], Length(aDataBytes));
- aNullData := IsNullData(aDataBytes);
+ //TODO XyberX O dado DateTime deve ser convertido em DateTimeREC no ponteiro TODO Internal
+ aNullData := False;
+ SetLength(aDataBytes, SizeOf(Boolean));
+ Move(Data^, aDataBytes[0], SizeOf(Boolean));
+// Move(aDataBytes[0], aNullData, 1);
+ If State in [dsEdit, dsInsert] Then
+ aNullData := aDataBytes[0] > 1;
+ If Not aNullData Then
+ Begin
+ aNullData := IsNullData(aDataBytes);
+ Result := Not aNullData;
+ End;
If Not aNullData then
Begin
SetLength(aDataBytes, cLen);
@@ -2625,11 +2766,15 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
End
Else
Begin
- cLen := GetCalcFieldLen(Field.datatype, Field.Size);
+ If (cSize > 0) Then
+ cLen := cSize
+ Else If cLen = 0 Then
+ cLen := GetCalcFieldLen(Field.datatype, Field.Size);
{$IFNDEF FPC}
{$IF CompilerVersion <= 22}
If Result Then
- Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
+ If Not (Field.datatype in [ftBoolean]) then
+ Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftLargeint, ftInteger, ftSmallint, ftFloat,
ftFMTBCD, ftBCD, ftCurrency, ftDate, ftTime]) Then
Result := PRESTDWBytes(@Data)^[1] > 0;
@@ -2667,6 +2812,13 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
End;
End;
End
+ Else If Field.datatype = ftExtended Then
+ Begin
+ If Length(TRESTDWBytes(Buffer)) = 0 Then
+ SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
+ Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
+ Move(vLongDouble, Pointer(Buffer)^, cLen-1);
+ End
Else
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
@@ -2677,7 +2829,12 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Move(PRESTDWBytes(@Data)^[0], Pointer(Buffer)^, cLen);
End;
{$ELSE}
- Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
+ If Not (Field.datatype in [ftBoolean{$IFNDEF FPC}
+ {$IF CompilerVersion > 21}
+ , ftByte, ftShortint
+ {$IFEND}
+ {$ENDIF}]) then
+ Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftAutoInc, ftLargeint, ftInteger, ftSmallint, ftFloat, ftSingle,
ftFMTBCD, ftBCD, ftCurrency]) Then
Begin
@@ -2709,7 +2866,7 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
End;
Else
Begin
- vTimeStamp := DateTimeToSQLTimeStamp(vDouble);
+ vTimeStamp := TSQLTimeStamp(DateTimeToSQLTimeStamp(vDouble));
cLen := SizeOf(vTimeStamp);
Move(Pointer(@vTimeStamp)^, Pointer(Buffer)^, cLen);
End;
@@ -2718,13 +2875,28 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Else If Field.datatype = ftExtended Then
Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
- SetLength(TRESTDWBytes(Buffer), cLen);
- Move(aDataBytes[1], Pointer(Buffer)^, SizeOf(DWLongDouble));
+ SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(vLongDouble));
+ Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
+ Move(Pointer(@vLongDouble)^, Pointer(Buffer)^, SizeOf(vLongDouble));
End
Else
Begin
+// If Field.datatype in [ftString, ftFixedChar
+// {$IF DEFINED(FPC) OR DEFINED(DELPHI10_0UP)}
+// , ftFixedWideChar , ftWideString{$IFEND}] Then
+// Begin
+// cLen := CountToNull(aDataBytes);
+// If Length(TRESTDWBytes(Buffer)) > cLen Then
+// Begin
+// SetLength(TRESTDWBytes(Buffer), 0);
+// SetLength(TRESTDWBytes(Buffer), cLen);
+// End;
+// End
+// Else
+// Begin
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Buffer), cLen);
+// End;
If Field.datatype = ftGuid Then
Move(PRESTDWBytes(@Data)^[0], Pointer(Buffer)^, cLen -1)
Else
@@ -2734,19 +2906,25 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
{$ELSE}
If Length(TRESTDWBytes(Buffer)) = 0 Then
SetLength(TRESTDWBytes(Buffer), cLen);
- Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
+ If Not (Field.datatype in [ftBoolean]) then
+ Result := ((Not(aNullData)) and Not(VarIsNull(Data^)));
If (Field.datatype In [ftAutoInc, ftLargeint, ftInteger, ftSmallint, ftFloat,
ftFMTBCD, ftBCD, ftCurrency]) Then
Begin
vDataType := FieldTypeToDWFieldType(Field.DataType);
- If Length(TRESTDWBytes(Buffer)) = 0 Then
- SetLength(TRESTDWBytes(Buffer), cLen);
If vDataType = dwftBCD Then
Begin
Move(aDataBytes[1], Pointer(@vLongDouble)^, SizeOf(vLongDouble));
cLen := SizeOf(vLongDouble);
Move(Pointer(@vLongDouble)^, Pointer(Buffer)^, cLen);
End
+ Else If vDataType = 45 Then
+ Begin
+ If Length(TRESTDWBytes(Buffer)) = 0 Then
+ SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
+ Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
+ Move(vLongDouble, Pointer(Buffer)^, cLen-1);
+ End
Else
Move(aDataBytes[1], Pointer(Buffer)^, cLen-1);
End
@@ -2757,6 +2935,11 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
SetLength(TRESTDWBytes(Buffer), cLen);
cLen := SizeOf(TDateTimeRec);
Move(aDataBytes[1], Pointer(@vDouble)^, SizeOf(DWDouble));
+ vDataType := FieldTypeToDWFieldType(Field.DataType);
+ //Em Lazarus é assim
+ Move(Pointer(@vDouble)^, Pointer(Buffer)^, cLen);
+ {
+ //Em Delphi eh diferente
Case Field.datatype Of
ftTime : Begin
vDateTimeRec.Time := DateTimeToTimeStamp(vDouble).Time;
@@ -2777,6 +2960,14 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Move(Pointer(@vTimeStamp)^, Pointer(Buffer)^, cLen);
End;
End;
+ }
+ End
+ Else If vDataType = dwftExtended Then
+ Begin
+ If Length(TRESTDWBytes(Buffer)) = 0 Then
+ SetLength(TRESTDWBytes(Pointer(@Buffer)^), SizeOf(DwLongDouble));
+ Move(aDataBytes[1], vLongDouble, SizeOf(vLongDouble));
+ Move(vLongDouble, Pointer(Buffer)^, cLen-1);
End
Else
Begin
@@ -2792,7 +2983,12 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
End;
End
Else
- Result := False;
+ Begin
+ If (Length(TRESTDWBytes(Buffer)) = 0) And
+ (cLen > 0) Then
+ SetLength(TRESTDWBytes(Buffer), cLen);
+ Result := False;
+ End;
End;
End
Else
@@ -2871,7 +3067,7 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
FreeMem(aDummyVar);
End;
{$ELSE}
- Result := InternalGetFieldData(Field, TRESTDWMTValueBuffer(Buffer));
+ Result := InternalGetFieldData(Field, TRESTDWMTValueBuffer(Buffer), Field.Size);
{$IFEND}
{$ELSE}
Result := InternalGetFieldData(Field, TRESTDWMTValueBuffer(Buffer));
@@ -2945,9 +3141,11 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
If I >= 0 Then
Begin
Case GetFieldDef(I) of
- dwftExtended : Result := TExtendedField;
+ dwftStream : Result := TStreamField;
+ dwftExtended : Result := TRESTDWNumericField;
+ dwftString : Result := TStringFieldRESTDW;
{$IFNDEF FPC}
- dwftTimeStampOffset : Result := TSQLTimeStampOffsetField;
+ dwftTimeStampOffset : Result := TRESTDWSQLTimeStampOffsetField;
{$ENDIF}
// dwftColor : Result := TColorField;
End;
@@ -2969,27 +3167,41 @@ function TRESTDWMemTable.GetActiveRecBuf(var RecBuf: PRESTDWMTMemBuffer
Buffer : Pointer
{$ENDIF}): Boolean;
Var
- aPointer: Pointer;
+ vResult : Boolean;
+ aDataSize : Integer;
+ aPointer : Pointer;
Begin
+ aDataSize := CalcFieldLen(Field.datatype, Field.Size);
+ {$IFNDEF FPC}
+// SetLength(Buffer, aDataSize);
+//// {$ELSE}
+ If Length(Buffer) = 0 Then
+ SetLength(TRESTDWBytes(Buffer), aDataSize);
+ {$ENDIF}
aPointer := @Buffer;
- Result := InternalGetFieldData(Field, TRESTDWMTValueBuffer(aPointer^));
+ vResult := False;
+ Try
+ vResult := InternalGetFieldData(Field, TRESTDWMTValueBuffer(aPointer^));
+ Finally
+ Result := vResult;
+ End;
End;
procedure TRESTDWMemTable.InternalSetFieldData(Field : TField;
Buffer : Pointer;
Const ValidateBuffer : TRESTDWMTValueBuffer);
Var
- PActualRecord : PRESTDWMTMemBuffer;
- aState : TDataSetState;
- Data : {$IFDEF FPC}PAnsiChar{$ELSE}PByte{$ENDIF};
- aBytes : TRESTDWBytes;
- pBytes : PRESTDWBytes;
- VarData : Variant;
+ PActualRecord : PRESTDWMTMemBuffer;
+ aState : TDataSetState;
+ Data : {$IFDEF FPC}PAnsiChar{$ELSE}PByte{$ENDIF};
+ aBytes : TRESTDWBytes;
+ pBytes : PRESTDWBytes;
+ VarData : Variant;
aResult,
vBoolean,
- IsData : Boolean;
+ IsData : Boolean;
aIndex,
- cLen : Integer;
+ cLen : Integer;
vDateTimeInt : DWInteger;
vDateFloat : DWFloat;
vDateLongDouble : DWLongDouble;
@@ -3047,7 +3259,7 @@ procedure TRESTDWMemTable.InternalSetFieldData(Field : TField;
End
Else
Begin
- If Length(TRESTDWBytes(Buffer)) = 0 Then
+ If Length(TRESTDWBytes(ValidateBuffer)) = 0 Then
Begin
If Field.datatype in [ftWord, ftAutoInc,
{$IFNDEF FPC}
@@ -3086,8 +3298,8 @@ procedure TRESTDWMemTable.InternalSetFieldData(Field : TField;
{$ELSE}
FillChar(Data^, cLen, 0);
{$ENDIF}
-// cLen := Length(String(buffer^));
- Move(buffer^, data^, cLen);
+ If Length(TRESTDWBytes(ValidateBuffer)) > 0 Then
+ Move(TRESTDWBytes(ValidateBuffer)[0], data^, cLen);
End;
dwftWord,
dwftAutoInc,
@@ -3215,6 +3427,21 @@ procedure TRESTDWMemTable.InternalSetFieldData(Field : TField;
DataEvent(deFieldChange, NativeInt(Field));
End;
+procedure TRESTDWMemTable.GetFieldList(List: TList; const FieldNames: string);
+var
+ Pos: Integer;
+ Field: TField;
+ Len: Integer;
+begin
+ Len := FieldNames.Length;
+ Pos := 1;
+ while Pos <= Len do
+ begin
+ Field := FieldByName(ExtractFieldName(FieldNames, Pos));
+ if Assigned(List) then List.Add(Field);
+ end;
+end;
+
function TRESTDWMemTable.GetBlob(aRecNo, Index: Integer): PMemBlobData;
Begin
Result := Nil;
@@ -3231,7 +3458,7 @@ function TRESTDWMemTable.GetBlob(aRecNo, Index: Integer): PMemBlobData;
If Length(fblobs) > Index Then
Result := @fblobs[Index];
End
- Else
+ Else If Length(fblobs) > Index Then
Result := @fblobs[Index];
End;
@@ -3246,32 +3473,32 @@ function TRESTDWMemTable.GetBlob(aRecNo, Index: Integer): PMemBlobData;
InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer){$ELSE}Buffer{$ENDIF RTL240_UP}, Buffer);
{$ELSE}
If Length(Buffer) > 0 Then
- InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer[0]){$ELSE}Buffer{$ENDIF RTL240_UP},TRESTDWMTValueBuffer(Buffer))
+ InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer[0]){$ELSE}Buffer{$ENDIF RTL240_UP}, TRESTDWMTValueBuffer(Pointer(@Buffer)^))
Else
InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer){$ELSE}Buffer{$ENDIF RTL240_UP}, Buffer);
{$IFEND}
{$ELSE}
If Length(TRESTDWBytes(Buffer)) > 0 Then
- InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer[0]){$ELSE}Buffer{$ENDIF RTL240_UP}, Buffer)
+ InternalSetFieldData(Field, Buffer, TRESTDWMTValueBuffer(Pointer(@Buffer)^))
Else
- InternalSetFieldData(Field, {$IFDEF RTL240_UP}PByte(@Buffer){$ELSE}Buffer{$ENDIF RTL240_UP}, Buffer);
+ InternalSetFieldData(Field, Buffer, Buffer);
{$ENDIF}
End;
+
{$IFNDEF NEXTGEN}
{$IFDEF RTL240_UP}
-
Procedure TRESTDWMemTable.SetFieldData(Field: TField; Buffer: Pointer);
var
ValidateBuffer: TRESTDWMTValueBuffer;
Begin
- If (Buffer <> nil) and (Field.FieldNo > 0) and (Field.DataSize > 0) then
+ If (Buffer <> nil) and (Field.FieldNo > 0) and (Field.DataSize > 0) then
Begin
- SetLength(ValidateBuffer, Field.DataSize);
- Move(Buffer^, ValidateBuffer[0], Field.DataSize);
+ SetLength(ValidateBuffer, Field.DataSize);
+ Move(Buffer^, ValidateBuffer[0], Length(TValueBuffer(Buffer))); //;Field.DataSize);
End
- Else
- ValidateBuffer := nil;
- InternalSetFieldData(Field, Buffer, ValidateBuffer);
+ Else
+ ValidateBuffer := nil;
+ InternalSetFieldData(Field, Buffer, ValidateBuffer);
End;
{$ENDIF RTL240_UP}
{$ENDIF ~NEXTGEN}
@@ -3366,8 +3593,9 @@ function TRESTDWMemTable.GetBlobData(Field: TField; Buffer: PRESTDWMTMemBuffer
Result := FBlobs[Field.Offset];
End;
-procedure TRESTDWMemTable.SetBlobData(Field: TField;
- Buffer: PRESTDWMTMemBuffer; Value: TMemBlobData);
+procedure TRESTDWMemTable.SetBlobData(Field : TField;
+ Buffer : PRESTDWMTMemBuffer;
+ Value : TMemBlobData);
Begin
If Buffer = PRESTDWMTMemBuffer(ActiveBuffer) then
Begin
@@ -3406,16 +3634,18 @@ function TRESTDWMemTable.CreateBlobStream(Field: TField; Mode: TBlobStreamMode):
Result := TRESTDWMTMemBlobStream.Create(Field as TBlobField, Mode);
End;
-function TRESTDWMemTable.BookmarkValid(aBookmark: TBookmark): Boolean;
+Function TRESTDWMemTable.BookmarkValid(aBookmark: TBookmark): Boolean;
Begin
- Result := (aBookmark <> nil) and FActive and
- (FindRecordID({$IFDEF FPC}NativeInt(@aBookmark[0]){$ELSE}TRESTDWMTBookmarkData
- ({$IFDEF RTL200_UP}Pointer(@aBookmark[0]
- ){$ELSE}aBookmark{$ENDIF RTL200_UP}^){$ENDIF}) <> nil);
+ Result := (aBookmark <> Nil) And
+ (FActive) And
+ (FindRecordID({$IFDEF FPC}NativeInt(@aBookmark[0])
+ {$ELSE}TRESTDWMTBookmarkData({$IFDEF RTL200_UP}Pointer(@aBookmark[0])
+ {$ELSE}aBookmark
+ {$ENDIF RTL200_UP}^)
+ {$ENDIF}) <> Nil);
End;
-function TRESTDWMemTable.CompareBookmarks(aBookmark1, aBookmark2: TBookmark
- ): Integer;
+Function TRESTDWMemTable.CompareBookmarks(aBookmark1, aBookmark2: TBookmark): Integer;
Begin
If (aBookmark1 = nil) and (aBookmark2 = nil) then
Result := 0
@@ -4398,7 +4628,7 @@ procedure TRESTDWMemTable.FetchAll;
Begin
// Release unneeded blob buffers, in order to save memory
// TDataSet has own buffer of records, so do not release blobs until they can be referenced
- With FDataSet Do
+ With TRESTDWMemtable(FDataSet) Do
Begin
h := Length(FBlobs);
If h > 0 Then //Free in batches, starting with oldest (at beginning)
@@ -4438,7 +4668,7 @@ procedure TRESTDWMemTable.FetchAll;
Function TDoubleLinkedBufIndex.GetCurrentBuffer: Pointer;
Begin
// pointer(FLastRecBuf) + FDataset.BufferOffset;
- Result := Pointer(FDataset.ActiveBuffer); //Todo XyberX
+ Result := Pointer(TRESTDWMemtable(FDataSet).ActiveBuffer); //Todo XyberX
End;
Function TDoubleLinkedBufIndex.GetCurrentRecord : TRecordBuffer;
@@ -4454,7 +4684,7 @@ procedure TRESTDWMemTable.FetchAll;
Function TDoubleLinkedBufIndex.GetSpareBuffer : TRecordBuffer;
Begin
// Pointer(FLastRecBuf) + FDataset.BufferOffset;
- Result := Pointer(FDataset.ActiveBuffer); //Todo XyberX
+ Result := Pointer(TRESTDWMemtable(FDataSet).ActiveBuffer); //Todo XyberX
End;
Function TDoubleLinkedBufIndex.GetSpareRecord : TRecordBuffer;
@@ -4827,7 +5057,7 @@ procedure TRESTDWMemTable.FetchAll;
Var
ARecord : TRecordBuffer;
Begin
- ARecord := FDataset.IntAllocRecordBuffer;
+ ARecord := TRESTDWMemtable(FDataSet).IntAllocRecordBuffer;
{$IFNDEF FPC}
{$IF CompilerVersion >= 20}
FLastRecBuf[IndNr].next := Pointer(ARecord);
@@ -5088,6 +5318,7 @@ function TRESTDWMemTable.IntAllocRecordBuffer: TRecordBuffer;
I, DataSize : Integer;
Begin
// Note: Only the internal buffers of TDataset provide bookmark information
+ New(Result);
DataSize := 0;
For I := 0 to Fields.Count - 1 do
CalcDataSize(Fields[I], DataSize);
@@ -5101,9 +5332,9 @@ procedure TRESTDWMemTable.InternalCreateIndex(F : TRESTDWDataSetIndex);
If Active and Not Refreshing then
FetchAll;
if IsUniDirectional then
- B:=TUniDirectionalBufIndex.Create(self)
+ B := TUniDirectionalBufIndex.Create(Nil)
else
- B:=TDoubleLinkedBufIndex.Create(self);
+ B := TDoubleLinkedBufIndex.Create(Nil);
F.FBufferIndex:=B;
with B do
begin
@@ -5343,24 +5574,26 @@ procedure TRESTDWMemTable.Assign(Source: TPersistent);
// Inherited;
//End;
-procedure TRESTDWMemTable.AssignMemoryRecord(Rec: TRESTDWMTMemoryRecord;
- Buffer: PRESTDWMTMemBuffer);
+procedure TRESTDWMemTable.AssignMemoryRecord(Rec : TRESTDWMTMemoryRecord;
+ Buffer : PRESTDWMTMemBuffer);
var
- I: Integer;
+ I : Integer;
Begin
- Move(Buffer^, Rec.Data^, FRecordSize);
- For I := 0 to BlobFieldCount - 1 do
+ Move(Buffer^, Rec.Data^, FRecordSize);
+ For I := 0 to BlobFieldCount - 1 Do
+ Begin
If Assigned(FBlobs[I]) Then
Rec.FBlobs[I] := FBlobs[I];
+ End;
End;
-procedure TRESTDWMemTable.SetMemoryRecordData(Buffer: PRESTDWMTMemBuffer;
- Pos: Integer);
+procedure TRESTDWMemTable.SetMemoryRecordData(Buffer : PRESTDWMTMemBuffer;
+ Pos : Integer);
var
Rec: TRESTDWMTMemoryRecord;
Begin
If State = dsFilter then
- Error('Not Editing...');
+ Error('Not Editing...');
Rec := Records[Pos];
AssignMemoryRecord(Rec, Buffer);
End;
@@ -5555,7 +5788,44 @@ procedure TRESTDWMemTable.InternalPost;
End;
FActive := True;
Inherited OpenCursor(InfoQuery);
+ {$IFDEF FPC}
+ If Not DefaultFields then
+ If (csDesigning in ComponentState) Then
+ SetProviderFlags;
+ {$ENDIF}
+End;
+
+{$IFDEF FPC}
+Procedure TRESTDWMemTable.SetProviderFlags;
+Var
+ I : Integer;
+Begin
+ If (Length(FFieldAttrs) > 0) And (Fields.Count > 0) Then
+ Begin
+ For I := 0 To Length(FFieldAttrs) -1 Do
+ Begin
+ If (Fields.Count > I) Then
+ Begin
+ Fields[I].ProviderFlags := [];
+ If FFieldAttrs[I] And 2 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfInUpdate];
+ If FFieldAttrs[I] And 4 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfInWhere];
+ If FFieldAttrs[I] And 8 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfInKey];
+ If FFieldAttrs[I] And 16 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfHidden];
+ {$IFDEF RESTDWLAZARUS}
+ If FFieldAttrs[I] And 32 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfRefreshOnInsert];
+ If FFieldAttrs[I] And 64 > 0 Then
+ Fields[I].ProviderFlags := Fields[I].ProviderFlags + [pfRefreshOnUpdate];
+ {$ENDIF}
+ End;
+ End;
+ End;
End;
+{$ENDIF}
procedure TRESTDWMemTable.InternalOpen;
Begin
@@ -5565,15 +5835,17 @@ procedure TRESTDWMemTable.InternalOpen;
{$IFNDEF FPC}
FieldDefList.Update;
{$ENDIF}
- {$IFNDEF HAS_AUTOMATIC_DB_FIELDS}
If DefaultFields then
- {$ENDIF !HAS_AUTOMATIC_DB_FIELDS}
- CreateFields;
+ CreateFields
+ {$IFDEF FPC}
+ Else If (csDesigning in ComponentState) Then
+ SetProviderFlags
+ {$ENDIF};
{$IFDEF FPC}
CalcOffSets;
{$ENDIF}
- BindFields(True);
InitBufferPointers(True);
+ BindFields(True);
InternalFirst;
FAllPacketsFetched := False;
End;
@@ -5587,7 +5859,17 @@ procedure TRESTDWMemTable.InternalOpen;
For I := 0 To FieldDefs.Count -1 Do
Begin
If FieldDefs[I].DataType = {$IFNDEF FPC}ftExtended{$ELSE}ftFMTBcd{$ENDIF} Then
- Field := TExtendedField.Create(Self)
+ Field := TRESTDWNumericField.Create(Self)
+ Else If FieldDefs[I].DataType = {$IFNDEF FPC}ftString{$ELSE}ftFixedChar{$ENDIF} Then
+ Begin
+ Field := TStringFieldRESTDW.Create(Self);
+ Field.Size := FieldDefs[I].Size;
+ End
+ Else If FieldDefs[I].DataType in [{$IFNDEF FPC}ftStream, {$ENDIF}ftBlob, ftMemo, ftWideMemo] Then
+ Begin
+ Field := TStreamField.Create(Self);
+// Field.Size := FieldDefs[I].Size;
+ End
Else
Begin
{$IFNDEF FPC}
@@ -5598,9 +5880,27 @@ procedure TRESTDWMemTable.InternalOpen;
Field.SetFieldType(FieldDefs[I].DataType);
{$ENDIF}
End;
- Field.FieldName := FieldDefs[I].Name;
- Field.DisplayLabel := FieldDefs[I].Name;
- Field.DataSet := Self;
+ Field.FieldName := FieldDefs[I].Name;
+ Field.DisplayLabel := FieldDefs[I].Name;
+ Field.DataSet := Self;
+ If Length(FFieldAttrs) > I Then
+ Begin
+ Field.ProviderFlags := [];
+ If FFieldAttrs[I] And 2 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfInUpdate];
+ If FFieldAttrs[I] And 4 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfInWhere];
+ If FFieldAttrs[I] And 8 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfInKey];
+ If FFieldAttrs[I] And 16 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfHidden];
+ {$IFDEF RESTDWLAZARUS}
+ If FFieldAttrs[I] And 32 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfRefreshOnInsert];
+ If FFieldAttrs[I] And 64 > 0 Then
+ Field.ProviderFlags := Field.ProviderFlags + [pfRefreshOnUpdate];
+ {$ENDIF}
+ End;
End;
SetLength(FFieldName, 0);
SetLength(FFieldName, Fields.Count);
@@ -5708,8 +6008,9 @@ function TRESTDWMemTable.ParserGetVariableValue(Sender: TObject;
procedure TRESTDWMemTable.InternalClose;
Begin
ClearBuffer;
- FAutoInc := 1;
+// SetLength(FFieldAttrs, 0);
BindFields(False);
+ FAutoInc := 1;
If DefaultFields then
DestroyFields;
FreeFieldBuffers;
@@ -6715,11 +7016,29 @@ function TRESTDWMemTable.CopyFromDataSet: Integer;
constructor TRESTDWIndex.Create(const ADataset: TRESTDWMemtable);
Begin
Inherited Create;
- FDataset := ADataset;
+ FDataset := TRESTDWMemtable(ADataset);
End;
-procedure TRESTDWMemTable.DoBeforeApply(ADataset: TDataset; RowsPending: Integer
- );
+{$IFDEF FPC}
+Function TRESTDWMemTable.GetFieldData(Field : TField;
+ Buffer : Pointer;
+ NativeFormat : Boolean): Boolean;
+Begin
+ Result := InternalGetFieldData(Field, TRESTDWMTValueBuffer(Buffer));
+End;
+{$ENDIF}
+
+Function TRESTDWMemTable.GetFieldData(FieldNo : Integer;
+ Var Buffer : TValueBuffer): Boolean;
+Begin
+{$IFDEF FPC}
+ Result := InternalGetFieldData(Fields[FieldNo], TRESTDWMTValueBuffer(Buffer)); //Inherited GetFieldData(Fields[FieldNo], Pointer(@Buffer));
+{$ELSE}
+ Inherited GetFieldData(FieldNo, Buffer);
+{$ENDIF}
+End;
+
+procedure TRESTDWMemTable.DoBeforeApply(ADataset: TDataset; RowsPending: Integer);
Begin
If Assigned(FBeforeApply) then
FBeforeApply(ADataset, RowsPending);
@@ -7189,6 +7508,7 @@ destructor TRESTDWMTMemBlobStream.Destroy;
End;
End;
+{$IFDEF FPC}
Procedure TRESTDWMTMemBlobStream.SetBlobFromRecord(Field: TField; Value: TMemBlobData);
Var
Rec: TRESTDWMTMemoryRecord;
@@ -7211,6 +7531,7 @@ destructor TRESTDWMTMemBlobStream.Destroy;
End;
End;
+{$ENDIF}
Function TRESTDWMTMemBlobStream.Read(Var Buffer; Count: Longint): Longint;
Var
@@ -7312,25 +7633,84 @@ destructor TRESTDWMTMemBlobStream.Destroy;
End;
End;
-{ TRESTDWStorageBase }
+Destructor TBlobStream.Destroy;
+begin
+// If Assigned(FDataSet) Then
+// FDataSet.SetBlobStream(Self);
+ Inherited Destroy;
+end;
-constructor TRESTDWStorageBase.Create(AOwner: TComponent);
+Constructor TStreamField.Create(AOwner: TComponent);
Begin
- inherited Create(AOwner);
- FEncodeStrs := True;
+ Inherited Create(AOwner);
+ FStream := TBlobStream.Create;
+ TBlobStream(FStream).FDataSet := TRESTDWMemtable(AOwner);
End;
-Procedure TRESTDWStorageBase.LoadDatasetFromStream(Dataset: TDataset; stream: TStream);
+Destructor TStreamField.Destroy;
Begin
-
+ TBlobStream(FStream).FDataSet := Nil;
+ FStream.Free;
+ Inherited Destroy;
End;
-Procedure TRESTDWStorageBase.LoadDWMemFromStream(Dataset: IRESTDWMemTable;
- stream: TStream);
+Procedure TStreamField.Put;
+Var
+ Field : TField;
Begin
-
+ If Not DataSet.IsEmpty Then
+ Begin
+ With (DataSet as TRESTDWMemtable), TBlobStream(FStream) do
+ Begin
+ Field := DataSet.FindField(FieldName);
+ FFieldIndex := Field.Offset;
+ FRecNo := RecNo;
+// SetBlobStream(FStream);
+ End;
+ End;
End;
+Function TStreamField.GetAsStream: TStream;
+Var
+ aBytes : TRESTDWBytes;
+ Field : TField;
+ {$IFDEF FPC}
+ vStream : TStream;
+ {$ENDIF}
+begin
+ If Not DataSet.IsEmpty then
+ Begin
+ Result := FStream;
+ With (DataSet as TRESTDWMemTable), TBlobStream(FStream) do
+ Begin
+ Clear;
+ Field := DataSet.FindField(FieldName);
+ FFieldIndex := Field.Offset;
+ FRecNo := RecNo;
+ {$IFDEF FPC}
+ vStream := DataSet.CreateBlobStream(Field, bmRead);
+ If Assigned(vStream) Then
+ Begin
+ vStream.Position := 0;
+ SetLength(aBytes, vStream.Size);
+ vStream.Read(aBytes, Length(aBytes));
+ vStream.Free;
+ End;
+ {$ELSE}
+ DataSet.GetBlobFieldData(Field.Offset, TBlobByteData(aBytes));
+ {$ENDIF}
+ If Not Assigned(Result) Then
+ Result := TBlobStream.Create;
+ TBlobStream(Result).Clear;
+ If Length(aBytes) > 0 Then
+ TBlobStream(Result).Write(aBytes, Length(aBytes));
+ End;
+ Result.Position := 0;
+ End
+ Else
+ Result := nil;
+end;
+
Destructor TRecordList.Destroy;
Begin
ClearAll;
@@ -7361,10 +7741,8 @@ constructor TRESTDWStorageBase.Create(AOwner: TComponent);
End;
Procedure TRecordList.Delete(Index: Integer);
-{$IFDEF FPC}
Var
vItem : PRESTDWMTMemoryRecord;
-{$ENDIF}
Begin
If (Index > -1) Then
Begin
@@ -7373,19 +7751,12 @@ constructor TRESTDWStorageBase.Create(AOwner: TComponent);
Begin
If Assigned(TRESTDWMTMemoryRecord(TList(Self).Items[Index]^)) Then
Begin
- {$IFDEF FPC}
- vItem := TList(Self).Items[Index];
- vItem^.Free;
- {$ELSE}
- {$IF CompilerVersion > 33}
- FreeAndNil(TRESTDWMTMemoryRecord(TList(Self).Items[Index]^));
- {$ELSE}
- FreeAndNil(TList(Self).Items[Index]^);
- {$IFEND}
- {$ENDIF}
+ vItem := TList(Self).Items[Index];
+ vItem^.Free;
+ Dispose(vItem);
+ vItem := Nil;
End;
End;
- Dispose(PRESTDWMTMemoryRecord(TList(Self).Items[Index]));
Except
End;
Inherited Delete(Index);
@@ -7405,66 +7776,6 @@ constructor TRESTDWStorageBase.Create(AOwner: TComponent);
Inherited Clear;
End;
-Procedure TRESTDWStorageBase.LoadFromFile(Dataset: TDataset; FileName: String);
-Var
- vFileStream : TFileStream;
-Begin
- If not FileExists(FileName) then
- Exit;
- vFileStream := TFileStream.Create(FileName,fmOpenRead or fmShareDenyWrite);
- Try
- LoadFromStream(Dataset,TStream(vFileStream));
- Finally
- vFileStream := Nil;
- vFileStream.Free;
- End;
-End;
-
-Procedure TRESTDWStorageBase.LoadFromStream(Dataset: TDataset; stream: TStream);
-Begin
- If Dataset.InheritsFrom(TRESTDWMemTable) then
- LoadDWMemFromStream(TRESTDWMemTable(Dataset), stream)
- Else
- LoadDatasetFromStream(Dataset, stream);
- If Dataset.Active then
- TRESTDWMemTable(Dataset).SortOnFields;
-End;
-
-Procedure TRESTDWStorageBase.SaveDatasetToStream(Dataset: TDataset; Var stream: TStream);
-Begin
-
-End;
-
-Procedure TRESTDWStorageBase.SaveDWMemToStream(Dataset: IRESTDWMemTable;
- Var stream: TStream);
-Begin
-
-End;
-
-Procedure TRESTDWStorageBase.SaveToFile(Dataset: TDataset; FileName: String);
-Var
- vFileStream : TFileStream;
-Begin
- Try
- vFileStream := TFileStream.Create(FileName,fmCreate);
- Try
- SaveToStream(Dataset,TStream(vFileStream));
- Except
- End;
- Finally
- vFileStream.Free;
- End;
-End;
-
-Procedure TRESTDWStorageBase.SaveToStream(Dataset: TDataset; Var stream: TStream);
-Begin
- If Dataset.InheritsFrom(TRESTDWMemTable) then
- SaveDWMemToStream(TRESTDWMemTable(Dataset), stream)
- Else
- SaveDatasetToStream(Dataset, stream);
-End;
-
-
{ TRESTDWMemTableEx }
Procedure TRESTDWMemTableEx.CopyStructure(Source: TDataSet);
diff --git a/CORE/Source/Sockets/Ics/uRESTDWIcsBase.pas b/CORE/Source/Sockets/Ics/uRESTDWIcsBase.pas
index a694f9a8..7ceac58d 100644
--- a/CORE/Source/Sockets/Ics/uRESTDWIcsBase.pas
+++ b/CORE/Source/Sockets/Ics/uRESTDWIcsBase.pas
@@ -40,7 +40,7 @@ interface
OverbyteIcsWinSock, OverbyteIcsWSocket, OverbyteIcsWndControl,
OverbyteIcsHttpAppServer, OverbyteIcsUtils, OverbyteIcsFormDataDecoder,
OverbyteIcsMimeUtils, OverbyteIcsSSLEAY, OverbyteIcsHttpSrv,
- OverbyteIcsWSocketS, OverbyteIcsSslX509Utils, OverbyteIcsSslBase;
+ OverbyteIcsWSocketS, OverbyteIcsSslX509Utils, OverbyteIcsSslBase, OverbyteIcsTypes;
type
TPoolerHttpConnection = class(THttpAppSrvConnection)
diff --git a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
index 00f47397..f6483558 100644
--- a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
+++ b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas
@@ -33,33 +33,45 @@ interface
{$IFDEF RESTDWWINDOWS}Windows,{$ENDIF}
{$IFNDEF RESTDWLAZARUS}SyncObjs,{$ENDIF}
{$IF not Defined(RESTDWLAZARUS) AND not Defined(RESTDWLAMW) AND not Defined(DELPHIXEUP)}uRESTDWMassiveBuffer,{$IFEND}
+ {$IFDEF USE_TAURUS_TLS}
+ TaurusTLS, TaurusTLSHeaders_types, TaurusTLSHeaders_evp, TaurusTLSHeaders_bio, TaurusTLSHeaders_rand,
+ TaurusTLSHeaders_bn, TaurusTLSHeaders_x509, TaurusTLSHeaders_err, TaurusTLSLoader,
+ {$ENDIF}
SysUtils, Classes, Db, Variants,
uRESTDWBasic, uRESTDWBasicDB, uRESTDWComponentEvents, uRESTDWBasicTypes,
uRESTDWJSONObject, uRESTDWParams, uRESTDWBasicClass, uRESTDWAbout,
- uRESTDWConsts, uRESTDWProtoTypes, uRESTDWDataUtils, uRESTDWTools, uRESTDWZlib,
+ uRESTDWProtoTypes, uRESTDWDataUtils, uRESTDWTools, uRESTDWZlib,
uRESTDWAuthenticators,
IdContext, IdHeaderList, IdTCPConnection, IdHTTPServer, IdCustomHTTPServer,
IdSSLOpenSSL, IdSSL, IdAuthentication, IdTCPClient, IdHTTPHeaderInfo,
IdComponent, IdBaseComponent, IdHTTP, IdMultipartFormData, IdMessageCoder,
- IdMessage, IdGlobalProtocols, IdGlobal, IdStack;
+ IdMessage, IdGlobalProtocols, IdGlobal, IdStack, uRESTDWConsts;
Type
- PIdSSLVersions = ^TIdSSLVersions;
+ TRESTDWVersionsBase = Array of Integer;
+ PRESTDWSSLVersions = ^TRESTDWSSLVersion;
+Type
TRESTDWIdProxyRequest = Class(TRESTDWProxyBase)
Private
+ {$IFDEF USE_TAURUS_TLS}
+ vUseTaurus : Boolean;
+ {$ENDIF}
vCipherList,
vaSSLRootCertFile,
ASSLPrivateKeyFile,
ASSLPrivateKeyPassword,
ASSLCertFile : String;
- aSSLMethod : TIdSSLVersion;
+ aSSLMethod : TRESTDWSSLVersion;
HTTPServer : TIdHTTPServer;
- lHandler : TIdServerIOHandlerSSLOpenSSL;
+ lHandler : TComponent;//TIdServerIOHandlerSSLOpenSSL;
vSSLVerifyMode : TIdSSLVerifyModeSet;
vSSLVerifyDepth : Integer;
- vSSLMode : TIdSSLMode;
- aSSLVersions : TIdSSLVersions;
+ vSSLMode : TRESTDWSSLMode;
+ aSSLVersions : TRESTDWSSLVersions;
+ Function GetSSlVersion : Integer;
+ Function GetSSlVersions : TRESTDWVersionsBase;
+ Function GetSSlMode : Integer;
Procedure aCommandGet (AContext : TIdContext;
ARequestInfo : TIdHTTPRequestInfo;
AResponseInfo : TIdHTTPResponseInfo);
@@ -87,32 +99,41 @@ interface
Constructor Create (AOwner : TComponent);Override;
Destructor Destroy; override;
Published
+ {$IFDEF USE_TAURUS_TLS}
+ Property UseTaurus : Boolean Read vUseTaurus Write vUseTaurus;
+ {$ENDIF}
Property SSLPrivateKeyFile : String Read aSSLPrivateKeyFile Write aSSLPrivateKeyFile;
Property SSLPrivateKeyPassword : String Read aSSLPrivateKeyPassword Write aSSLPrivateKeyPassword;
Property SSLCertFile : String Read aSSLCertFile Write aSSLCertFile;
Property SSLRootCertFile : String Read vaSSLRootCertFile Write vaSSLRootCertFile;
Property SSLVerifyMode : TIdSSLVerifyModeSet Read vSSLVerifyMode Write vSSLVerifyMode;
Property SSLVerifyDepth : Integer Read vSSLVerifyDepth Write vSSLVerifyDepth;
- Property SSLMode : TIdSSLMode Read vSSLMode Write vSSLMode;
- Property SSLMethod : TIdSSLVersion Read aSSLMethod Write aSSLMethod;
- Property SSLVersions : TIdSSLVersions Read aSSLVersions Write aSSLVersions;
+ Property SSLMode : TRESTDWSSLMode Read vSSLMode Write vSSLMode;
+ Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod;
+ Property SSLVersions : TRESTDWSSLVersions Read aSSLVersions Write aSSLVersions;
Property CipherList : String Read vCipherList Write vCipherList;
End;
TRESTDWIdServicePooler = Class(TRESTServicePoolerBase)
Private
+ {$IFDEF USE_TAURUS_TLS}
+ vUseTaurus : Boolean;
+ {$ENDIF}
vCipherList,
vaSSLRootCertFile,
ASSLPrivateKeyFile,
ASSLPrivateKeyPassword,
ASSLCertFile : String;
- aSSLMethod : TIdSSLVersion;
+ aSSLMethod : TRESTDWSSLVersion;
HTTPServer : TIdHTTPServer;
- lHandler : TIdServerIOHandlerSSLOpenSSL;
+ lHandler : TComponent;//TIdServerIOHandlerSSLOpenSSL;
vSSLVerifyMode : TIdSSLVerifyModeSet;
vSSLVerifyDepth : Integer;
- vSSLMode : TIdSSLMode;
- aSSLVersions : TIdSSLVersions;
+ vSSLMode : TRESTDWSSLMode;
+ aSSLVersions : TRESTDWSSLVersions;
+ Function GetSSlVersion : Pointer;
+ Function GetSSlMode : Pointer;
+ Function GetSSlVersions : Pointer;
Procedure aCommandGet (AContext : TIdContext;
ARequestInfo : TIdHTTPRequestInfo;
AResponseInfo : TIdHTTPResponseInfo);
@@ -145,15 +166,18 @@ interface
Constructor Create (AOwner : TComponent);Override;
Destructor Destroy; override;
Published
+ {$IFDEF USE_TAURUS_TLS}
+ Property UseTaurus : Boolean Read vUseTaurus Write vUseTaurus;
+ {$ENDIF}
Property SSLPrivateKeyFile : String Read aSSLPrivateKeyFile Write aSSLPrivateKeyFile;
Property SSLPrivateKeyPassword : String Read aSSLPrivateKeyPassword Write aSSLPrivateKeyPassword;
Property SSLCertFile : String Read aSSLCertFile Write aSSLCertFile;
Property SSLRootCertFile : String Read vaSSLRootCertFile Write vaSSLRootCertFile;
Property SSLVerifyMode : TIdSSLVerifyModeSet Read vSSLVerifyMode Write vSSLVerifyMode;
Property SSLVerifyDepth : Integer Read vSSLVerifyDepth Write vSSLVerifyDepth;
- Property SSLMode : TIdSSLMode Read vSSLMode Write vSSLMode;
- Property SSLMethod : TIdSSLVersion Read aSSLMethod Write aSSLMethod;
- Property SSLVersions : TIdSSLVersions Read aSSLVersions Write aSSLVersions;
+ Property SSLMode : TRESTDWSSLMode Read vSSLMode Write vSSLMode;
+ Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod;
+ Property SSLVersions : TRESTDWSSLVersions Read aSSLVersions Write aSSLVersions;
Property CipherList : String Read vCipherList Write vCipherList;
End;
@@ -267,9 +291,13 @@ interface
vHostCert : String;
vPortCert : Integer;
vOnGetpassword : TOnGetpassword;
- vSSLVersions : TIdSSLVersions;
- ssl : TIdSSLIOHandlerSocketOpenSSL;
- vCertMode : TIdSSLMode;
+ vUseTaurus : Boolean;
+ ssl : TComponent;//TIdSSLIOHandlerSocketOpenSSL;
+ vSSLVersions : TRESTDWSSLVersions;
+ vCertMode : TRESTDWSSLMode;
+ Function GetSSlVersion : Integer;
+ Function GetSSlMode : Integer;
+ Function GetSSlVersions : TRESTDWVersionsBase;
Procedure SetParams;
Procedure SetUseSSL (Value : Boolean);Override;
Procedure SetHeaders (AHeaders : TStringList);Overload;Override;
@@ -430,8 +458,8 @@ interface
IgnoreEvents : Boolean = False):Integer;Overload;Override;
Published
Property VerifyCert : Boolean Read GetVerifyCert Write SetVerifyCert;
- Property SSLVersions : TIdSSLVersions Read vSSLVersions Write vSSLVersions;
- Property CertMode : TIdSSLMode Read vCertMode Write vCertMode;
+ Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions;
+ Property CertMode : TRESTDWSSLMode Read vCertMode Write vCertMode;
Property CertFile : String Read vCertFile Write vCertFile;
Property KeyFile : String Read vKeyFile Write vKeyFile;
Property RootCertFile : String Read vRootCertFile Write vRootCertFile;
@@ -458,10 +486,20 @@ interface
TRESTDWIdClientPooler = Class(TRESTClientPoolerBase)
Private
- vCipherList : String;
- aSSLMethod : TIdSSLVersion;
+ {$IFDEF USE_TAURUS_TLS}
+ vUseTaurus : Boolean;
+ {$ENDIF}
+ vCipherList,
+ vaSSLRootCertFile,
+ ASSLPrivateKeyFile,
+ ASSLPrivateKeyPassword,
+ ASSLCertFile : String;
+ aSSLMethod : TRESTDWSSLVersion;
HttpRequest : TRESTDWIdClientREST;
- vSSLMode : TIdSSLMode;
+ vSSLMode : TRESTDWSSLMode;
+ Function GetSSlVersion : Integer;
+ Function GetSSlMode : Integer;
+ Function GetSSlVersions : TRESTDWVersionsBase;
Function SendEvent (EventData : String;
Var Params : TRESTDWParams;
EventType : TSendEvent = sePOST;
@@ -489,8 +527,12 @@ interface
AMessageErro : String): Boolean;
Procedure Abort;Override;
Published
- Property SSLMode : TIdSSLMode Read vSSLMode Write vSSLMode;
- Property CipherList : String Read vCipherList Write vCipherList;
+ Property SSLPrivateKeyFile : String Read aSSLPrivateKeyFile Write aSSLPrivateKeyFile;
+ Property SSLPrivateKeyPassword : String Read aSSLPrivateKeyPassword Write aSSLPrivateKeyPassword;
+ Property SSLCertFile : String Read aSSLCertFile Write aSSLCertFile;
+ Property SSLRootCertFile : String Read vaSSLRootCertFile Write vaSSLRootCertFile;
+ Property SSLMode : TRESTDWSSLMode Read vSSLMode Write vSSLMode;
+ Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod;
End;
TRESTDWIdPoolerList = Class(TRESTDWPoolerListBase)
@@ -516,12 +558,12 @@ TIdHTTPAccess = class(TIdHTTP)
If Assigned(HttpRequest.IOHandler) Then
HttpRequest.IOHandler.CloseGracefully;
HttpRequest.Disconnect(false);
- If Assigned(ssl) Then
- FreeAndNil(ssl);
HttpRequest.Free;
Except
End;
End;
+ If Assigned(ssl) Then
+ FreeAndNil(ssl);
Inherited;
End;
@@ -2914,6 +2956,21 @@ TIdHTTPAccess = class(TIdHTTP)
vOnGetpassword(Password);
End;
+Function TRESTDWIdClientREST.GetSSlMode : Integer;
+Begin
+ Result := 0;
+End;
+
+Function TRESTDWIdClientREST.GetSSlVersion : Integer;
+Begin
+ Result := 0;
+End;
+
+Function TRESTDWIdClientREST.GetSSlVersions : TRESTDWVersionsBase;
+Begin
+ Result := Nil;
+End;
+
Function TRESTDWIdClientREST.GetVerifyCert : boolean;
Begin
Result := vVerifyCert;
@@ -2925,20 +2982,41 @@ TIdHTTPAccess = class(TIdHTTP)
End;
Procedure TRESTDWIdClientREST.SetCertOptions;
+{$IFDEF USE_TAURUS_TLS}
+Var
+ vRESTDWVersionsBase : TRESTDWVersionsBase;
+{$ENDIF}
Begin
If Assigned(ssl) Then
Begin
{$IFDEF FPC}
- ssl.OnGetPassword := @Getpassword;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := @Getpassword;
{$ELSE}
- ssl.OnGetPassword := Getpassword;
+ vRESTDWVersionsBase := GetSSlVersions;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ End
+ Else
+ Begin
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.CertFile := vCertFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.KeyFile := vKeyFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.RootCertFile := vRootCertFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).Host := vHostCert;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).Port := vPortCert;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Mode := TIdSSLMode(GetSSlMode);;
+ End;
+ {$ELSE}
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.CertFile := vCertFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.KeyFile := vKeyFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.RootCertFile := vRootCertFile;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).Host := vHostCert;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).Port := vPortCert;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Mode := TIdSSLMode(GetSSlMode);;
+ {$ENDIF}
{$ENDIF}
- ssl.SSLOptions.CertFile := vCertFile;
- ssl.SSLOptions.KeyFile := vKeyFile;
- ssl.SSLOptions.RootCertFile := vRootCertFile;
- ssl.Host := vHostCert;
- ssl.Port := vPortCert;
- ssl.SSLOptions.Mode := vCertMode;
End;
End;
@@ -3041,6 +3119,10 @@ TIdHTTPAccess = class(TIdHTTP)
End;
Procedure TRESTDWIdClientREST.SetUseSSL(Value : Boolean);
+{$IFDEF USE_TAURUS_TLS}
+Var
+ vRESTDWVersionsBase : TRESTDWVersionsBase;
+{$ENDIF}
Begin
Inherited;
If Assigned(HttpRequest) Then
@@ -3049,29 +3131,50 @@ TIdHTTPAccess = class(TIdHTTP)
Begin
If ssl = Nil Then
Begin
- ssl := TIdSSLIOHandlerSocketOpenSSL.Create(HttpRequest);
{$IFDEF FPC}
- ssl.OnVerifyPeer := @IdSSLIOHandlerSocketOpenSSL1VerifyPeer;
+ ssl := TIdSSLIOHandlerSocketOpenSSL.Create(HttpRequest);
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnVerifyPeer := @IdSSLIOHandlerSocketOpenSSL1VerifyPeer;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := @Getpassword;
+ If Assigned(HttpRequest) Then
+ HttpRequest.IOHandler := TIdSSLIOHandlerSocketOpenSSL(ssl);
{$ELSE}
- ssl.OnVerifyPeer := IdSSLIOHandlerSocketOpenSSL1VerifyPeer;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ End
+ Else
+ Begin
+ ssl := TIdSSLIOHandlerSocketOpenSSL.Create(HttpRequest);
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnVerifyPeer := IdSSLIOHandlerSocketOpenSSL1VerifyPeer;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Method := TIdSSLVersion(GetSSlVersion);//aSSLMethod;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(@vRESTDWVersionsBase)^);
+ TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Mode := TIdSSLMode(GetSSlMode);//vSSLMode;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword;
+ If Assigned(HttpRequest) Then
+ HttpRequest.IOHandler := TIdSSLIOHandlerSocketOpenSSL(ssl);
+ End;
+ {$ELSE}
+ ssl := TIdSSLIOHandlerSocketOpenSSL.Create(HttpRequest);
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnVerifyPeer := @IdSSLIOHandlerSocketOpenSSL1VerifyPeer;
+ TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := @Getpassword;
+ If Assigned(HttpRequest) Then
+ HttpRequest.IOHandler := TIdSSLIOHandlerSocketOpenSSL(ssl);
+ {$ENDIF}
{$ENDIF}
End;
- ssl.SSLOptions.SSLVersions := vSSLVersions;
SetCertOptions;
- If Assigned(HttpRequest) Then
- HttpRequest.IOHandler := ssl;
- If sslvSSLv2 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvSSLv2
- Else If sslvSSLv23 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvSSLv23
- Else If sslvSSLv3 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvSSLv3
- Else If sslvTLSv1 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvTLSv1
- Else If sslvTLSv1_1 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvTLSv1_1
- Else If sslvTLSv1_2 in vSSLVersions Then
- ssl.SSLOptions.Method := sslvTLSv1_2;
+// If sslvSSLv2 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvSSLv2
+// Else If sslvSSLv23 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvSSLv23
+// Else If sslvSSLv3 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvSSLv3
+// Else If sslvTLSv1 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvTLSv1
+// Else If sslvTLSv1_1 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvTLSv1_1
+// Else If sslvTLSv1_2 in vSSLVersions Then
+// ssl.SSLOptions.Method := sslvTLSv1_2;
End
Else
Begin
@@ -3395,8 +3498,8 @@ TIdHTTPAccess = class(TIdHTTP)
Begin
Inherited;
SetSocketKind('Standalone - Indy');
+ lHandler := Nil;
HTTPServer := TIdHTTPServer.Create(Nil);
- lHandler := TIdServerIOHandlerSSLOpenSSL.Create(Nil);
{$IFDEF FPC}
HTTPServer.OnQuerySSLPort := @IdHTTPServerQuerySSLPort;
HTTPServer.OnCommandGet := @aCommandGet;
@@ -3556,6 +3659,8 @@ TIdHTTPAccess = class(TIdHTTP)
End;
Procedure TRESTDWIdServicePooler.SetActive(Value: Boolean);
+Var
+ vRESTDWVersionsBase : Pointer;
Begin
If (Value) And
(Not (HTTPServer.Active)) Then
@@ -3564,27 +3669,69 @@ TIdHTTPAccess = class(TIdHTTP)
raise Exception.Create(cServerMethodClassNotAssigned);
Try
- If (ASSLPrivateKeyFile <> '') And
- (ASSLPrivateKeyPassword <> '') And
- (ASSLCertFile <> '') Then
+ If (ASSLCertFile <> '') Then
Begin
- lHandler.SSLOptions.Method := aSSLMethod;
- lHandler.SSLOptions.SSLVersions := PIdSSLVersions(@SSLVersions)^;
- {$IFDEF FPC}
- lHandler.OnGetPassword := @GetSSLPassword;
- lHandler.OnVerifyPeer := @SSLVerifyPeer;
+ vRESTDWVersionsBase := GetSSlVersions;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ If (Assigned(lHandler) And (lHandler is TIdServerIOHandlerSSLOpenSSL)) Then
+ FreeAndNil(lHandler);
+ If Not Assigned(lHandler) Then
+ lHandler := TTaurusTLSServerIOHandler.Create(Nil);
+ TTaurusTLSServerIOHandler(lHandler).SSLOptions.MinTLSVersion := TTaurusTLSSSLVersion(Pointer(GetSSlVersion)^);//vSSLMode;
+ TTaurusTLSServerIOHandler(lHandler).SSLOptions.Mode := TTaurusTLSSSLMode(Pointer(GetSSlMode)^);//vSSLMode;
+ TTaurusTLSServerIOHandler(lHandler).DefaultCert.PublicKey := ASSLCertFile;
+ TTaurusTLSServerIOHandler(lHandler).DefaultCert.PrivateKey := ASSLPrivateKeyFile;
+ TTaurusTLSServerIOHandler(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth;
+ TTaurusTLSServerIOHandler(lHandler).DefaultCert.RootKey := vASSLRootCertFile;
+ TTaurusTLSServerIOHandler(lHandler).SSLOptions.CipherList := vCipherList;
+ TTaurusTLSServerIOHandler(lHandler).SSLOptions.VerifyHostname := False;
+ HTTPServer.IOHandler := TTaurusTLSServerIOHandler(lHandler);
+ End
+ Else
+ Begin
+ If (Assigned(lHandler) And (lHandler is TTaurusTLSServerIOHandler)) Then
+ FreeAndNil(lHandler);
+ If Not Assigned(lHandler) Then
+ lHandler := TIdServerIOHandlerSSLOpenSSL.Create(Nil);
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(vRESTDWVersionsBase)^);
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(Pointer(GetSSlVersion)^);//aSSLMethod;
+ {$IFDEF FPC}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := @SSLVerifyPeer;
+ {$ELSE}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := SSLVerifyPeer;
+ {$ENDIF}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CertFile := ASSLCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.KeyFile := ASSLPrivateKeyFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(Pointer(GetSSlMode)^);//vSSLMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList;
+ HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler);
+ End;
{$ELSE}
- lHandler.OnGetPassword := GetSSLPassword;
- lHandler.OnVerifyPeer := SSLVerifyPeer;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(vRESTDWVersionsBase)^);
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(Pointer(GetSSlVersion)^);//aSSLMethod;
+ {$IFDEF FPC}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := @SSLVerifyPeer;
+ {$ELSE}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := SSLVerifyPeer;
+ {$ENDIF}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CertFile := ASSLCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.KeyFile := ASSLPrivateKeyFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(Pointer(GetSSlMode)^);//vSSLMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList;
+ HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler);
{$ENDIF}
- lHandler.SSLOptions.CertFile := ASSLCertFile;
- lHandler.SSLOptions.KeyFile := ASSLPrivateKeyFile;
- lHandler.SSLOptions.VerifyMode := vSSLVerifyMode;
- lHandler.SSLOptions.VerifyDepth := vSSLVerifyDepth;
- lHandler.SSLOptions.RootCertFile := vASSLRootCertFile;
- lHandler.SSLOptions.Mode := vSSLMode;
- lHandler.SSLOptions.CipherList := vCipherList;
- HTTPServer.IOHandler := lHandler;
End
Else
HTTPServer.IOHandler := Nil;
@@ -3596,7 +3743,7 @@ TIdHTTPAccess = class(TIdHTTP)
With HTTPServer.Bindings.Add do
Begin
IP := ServerIPVersionConfig.IPv4Address;
- IPVersion := Id_IPv4;
+ IPVersion := TIdIPVersion(Id_IPv4);
Port := ServicePort;
End;
End;
@@ -3606,7 +3753,7 @@ TIdHTTPAccess = class(TIdHTTP)
With HTTPServer.Bindings.Add do
Begin
IP := ServerIPVersionConfig.IPv6Address;
- IPVersion := Id_IPv6;
+ IPVersion := TIdIPVersion(Id_IPv6);
Port := ServicePort;
End;
End;
@@ -3631,6 +3778,180 @@ TIdHTTPAccess = class(TIdHTTP)
Password := aSSLPrivateKeyPassword;
End;
+Function TRESTDWIdServicePooler.GetSSlMode : Pointer;
+{$IFDEF USE_TAURUS_TLS}
+ Var
+ bSSLMode : TIdSSLMode;
+ aTaurSSLMode : TTaurusTLSSSLMode;
+{$ENDIF}
+Begin
+ Result := Nil;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ If vSSLMode = sslUnassigned Then
+ aTaurSSLMode := TTaurusTLSSSLMode(sslmUnassigned)
+ Else If vSSLMode = sslClient Then
+ aTaurSSLMode := TTaurusTLSSSLMode(sslmClient)
+ Else If vSSLMode = sslServer Then
+ aTaurSSLMode := TTaurusTLSSSLMode(sslmServer)
+ Else If vSSLMode = sslBoth Then
+ aTaurSSLMode := TTaurusTLSSSLMode(sslmBoth);
+ Result := @aTaurSSLMode;
+ End
+ Else
+ Begin
+ If vSSLMode = sslUnassigned Then
+ bSSLMode := sslmUnassigned
+ Else If vSSLMode = sslClient Then
+ bSSLMode := sslmClient
+ Else If vSSLMode = sslServer Then
+ bSSLMode := sslmServer
+ Else If vSSLMode = sslBoth Then
+ bSSLMode := sslmBoth;
+ Result := @bSSLMode;
+ End;
+ {$ELSE}
+ If vSSLMode = sslUnassigned Then
+ SSLMode := sslUnassigned
+ Else If vSSLMode = sslClient Then
+ SSLMode := sslClient
+ Else If vSSLMode = sslServer Then
+ SSLMode := sslServer
+ Else If vSSLMode = sslBoth Then
+ SSLMode := sslBoth;
+ Result := @SSLMode;
+ {$ENDIF}
+End;
+
+Function TRESTDWIdServicePooler.GetSSlVersion : Pointer;
+Var
+ SSLVersion : TIdSSLVersion;
+ {$IFDEF USE_TAURUS_TLS}
+ MinSSLVersion : TTaurusTLSSSLVersion;
+ {$ENDIF}
+Begin
+ Result := Nil;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ If SSLv2 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv2);
+ If SSLv23 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv23);
+ If SSLv3 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv3);
+ If TLSv1 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1);
+ If TLSv1_1 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1);
+ If TLSv1_2 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2);
+ If TLSv1_3 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3);
+ Result := @MinSSLVersion;
+ End
+ Else
+ Begin
+ If aSSLMethod = SSLv2 Then
+ SSLVersion := sslvSSLv2;
+ If aSSLMethod = SSLv23 Then
+ SSLVersion := sslvSSLv23;
+ If aSSLMethod = SSLv3 Then
+ SSLVersion := sslvSSLv3;
+ If aSSLMethod = TLSv1 Then
+ SSLVersion := sslvTLSv1;
+ If aSSLMethod = TLSv1_1 Then
+ SSLVersion := sslvTLSv1_1;
+ If aSSLMethod = TLSv1_2 Then
+ SSLVersion := sslvTLSv1_2;
+ If aSSLMethod = TLSv1_3 Then
+ Raise Exception.Create('Indy no have TLS 1.3 Support...');
+ Result := @SSLVersion;
+ End;
+ {$ELSE}
+ If aSSLMethod = SSLv2 Then
+ SSLVersion := sslvSSLv2;
+ If aSSLMethod = SSLv23 Then
+ SSLVersion := sslvSSLv23;
+ If aSSLMethod = SSLv3 Then
+ SSLVersion := sslvSSLv3;
+ If aSSLMethod = TLSv1 Then
+ SSLVersion := sslvTLSv1;
+ If aSSLMethod = TLSv1_1 Then
+ SSLVersion := sslvTLSv1_1;
+ If aSSLMethod = TLSv1_2 Then
+ SSLVersion := sslvTLSv1_2;
+ If aSSLMethod = TLSv1_3 Then
+ Raise Exception.Create('Indy no have TLS 1.3 Support...');
+ Result := @SSLVersion;
+ {$ENDIF}
+End;
+
+Function TRESTDWIdServicePooler.GetSSlVersions : Pointer;
+Var
+ bSSLVersions : TIdSSLVersions;
+ {$IFDEF USE_TAURUS_TLS}
+ MinSSLVersion : TTaurusTLSSSLVersion;
+ {$ENDIF}
+Begin
+ bSSLVersions := [];
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ If SSLv2 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv2);
+ If SSLv23 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv23);
+ If SSLv3 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(SSLv3);
+ If TLSv1 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1);
+ If TLSv1_1 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1);
+ If TLSv1_2 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2);
+ If TLSv1_3 in aSSLVersions Then
+ MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3);
+ Result := @MinSSLVersion;
+ End
+ Else
+ Begin
+ If SSLv2 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv2];
+ If SSLv23 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv23];
+ If SSLv3 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv3];
+ If TLSv1 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1];
+ If TLSv1_1 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1_1];
+ If TLSv1_2 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1_2];
+ If TLSv1_3 in aSSLVersions Then
+ Raise Exception.Create('Indy no have TLS 1.3 Support...');
+ Result := @SSLVersions;
+ End;
+ {$ELSE}
+ If SSLv2 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv2];
+ If SSLv23 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv23];
+ If SSLv3 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvSSLv3];
+ If TLSv1 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1];
+ If TLSv1_1 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1_1];
+ If TLSv1_2 in aSSLVersions Then
+ bSSLVersions := bSSLVersions + [sslvTLSv1_2];
+ If TLSv1_3 in aSSLVersions Then
+ Raise Exception.Create('Indy no have TLS 1.3 Support...');
+ Result := @bSSLVersions;
+ {$ENDIF}
+End;
+
{ TRESTDWIdClientPooler }
@@ -3687,6 +4008,21 @@ procedure TRESTDWIdClientPooler.Abort;
Inherited;
End;
+Function TRESTDWIdClientPooler.GetSSlMode : Integer;
+Begin
+ Result := 0;
+End;
+
+Function TRESTDWIdClientPooler.GetSSlVersion : Integer;
+Begin
+ Result := 0;
+End;
+
+Function TRESTDWIdClientPooler.GetSSlVersions : TRESTDWVersionsBase;
+Begin
+ Result := Nil;
+End;
+
function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer;
AMessageErro: String): Boolean;
var
@@ -3729,6 +4065,8 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer;
aEncoding : TEncodeSelect;
aAccessTag : String;
aAuthenticationOptions : TRESTDWClientAuthOptionParams);
+Var
+ vRESTDWVersionsBase : TRESTDWVersionsBase;
Begin
{$IFNDEF RESTDWLAZARUS}
{$IFNDEF FPC}
@@ -3737,8 +4075,22 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer;
{$ENDIF}
If (UseSSL) Then
Begin
- HttpRequest.CertMode := vSSLMode;
- HttpRequest.SSLVersions := PIdSSLVersions(@SSLVersions)^;
+ vRESTDWVersionsBase := GetSSlVersions;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ End
+ Else
+ Begin
+ HttpRequest.CertMode := TRESTDWSSLMode(GetSSlMode);//vSSLMode;
+ HttpRequest.SSLVersions := TRESTDWSSLVersions(Pointer(@vRESTDWVersionsBase)^);
+ HttpRequest.CertFile := ASSLCertFile;
+ HttpRequest.KeyFile := ASSLPrivateKeyFile;
+ HttpRequest.RootCertFile := vASSLRootCertFile;
+// HttpRequest.CipherList := vCipherList;
+ End;
+ {$ELSE}
+ {$ENDIF}
End;
End;
@@ -4635,7 +4987,7 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer;
FreeAndNil(HttpRequest);
HttpRequest := TRESTDWIdClientREST.Create(Nil);
If (TypeRequest = trHttps) Then
- HttpRequest.SSLVersions := PIdSSLVersions(@SSLVersions)^;
+ HttpRequest.SSLVersions := SSLVersions;//PIdSSLVersions(@SSLVersions)^;
HttpRequest.UserAgent := UserAgent;
SetCharsetRequest(HttpRequest, Encoding);
SetParams(ProxyOptions, RequestTimeout, ConnectTimeout, AuthenticationOptions);
@@ -4644,11 +4996,9 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer;
If BinaryRequest Then
If HttpRequest.DefaultCustomHeader.IndexOfName('binaryrequest') = -1 Then
HttpRequest.DefaultCustomHeader.Add('binaryrequest=true');
-
If aBinaryCompatibleMode Then
If HttpRequest.DefaultCustomHeader.IndexOfName('BinaryCompatibleMode') = -1 Then
HttpRequest.DefaultCustomHeader.Add('BinaryCompatibleMode=true');
-
LastErrorMessage := '';
LastErrorCode := -1;
Try
@@ -4803,6 +5153,21 @@ destructor TRESTDWIdPoolerList.Destroy;
{ TRESTDWIdProxyRequest }
+Function TRESTDWIdProxyRequest.GetSSlVersion : Integer;
+Begin
+ Result := 0;
+End;
+
+Function TRESTDWIdProxyRequest.GetSSlVersions : TRESTDWVersionsBase;
+Begin
+ Result := Nil;
+End;
+
+Function TRESTDWIdProxyRequest.GetSSlMode : Integer;
+Begin
+ Result := 0;
+End;
+
Procedure TRESTDWIdProxyRequest.aCommandGet(AContext : TIdContext;
ARequestInfo : TIdHTTPRequestInfo;
AResponseInfo : TIdHTTPResponseInfo);
@@ -5003,6 +5368,10 @@ destructor TRESTDWIdPoolerList.Destroy;
HTTPServer := TIdHTTPServer.Create(Nil);
ClientHttpBase := TRESTDWClientHttpBase;
lHandler := TIdServerIOHandlerSSLOpenSSL.Create(Nil);
+ {$IFDEF USE_TAURUS_TLS}
+ vUseTaurus := False;
+ {$ENDIF}
+
{$IFDEF FPC}
HTTPServer.OnQuerySSLPort := @IdHTTPServerQuerySSLPort;
HTTPServer.OnCommandGet := @aCommandGet;
@@ -5125,6 +5494,8 @@ procedure TRESTDWIdProxyRequest.OnParseAuthentication(AContext : TIdCont
End;
procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean);
+Var
+ vRESTDWVersionsBase : TRESTDWVersionsBase;
Begin
If (Value) And
(Not (HTTPServer.Active)) Then
@@ -5134,26 +5505,56 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean);
Try
If (ASSLPrivateKeyFile <> '') And
- (ASSLPrivateKeyPassword <> '') And
+// (ASSLPrivateKeyPassword <> '') And
(ASSLCertFile <> '') Then
Begin
- lHandler.SSLOptions.Method := aSSLMethod;
- lHandler.SSLOptions.SSLVersions := PIdSSLVersions(@SSLVersions)^;
- {$IFDEF FPC}
- lHandler.OnGetPassword := @GetSSLPassword;
- lHandler.OnVerifyPeer := @SSLVerifyPeer;
+ vRESTDWVersionsBase := GetSSlVersions;
+ {$IFDEF USE_TAURUS_TLS}
+ If vUseTaurus Then
+ Begin
+ End
+ Else
+ Begin
+ //TODO SSL
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(GetSSlVersion);//aSSLMethod;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(@vRESTDWVersionsBase)^);
+// PRESTDWSSLVersions(@SSLVersions)^;
+ {$IFDEF FPC}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := @SSLVerifyPeer;
+ {$ELSE}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := SSLVerifyPeer;
+ {$ENDIF}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CertFile := ASSLCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.KeyFile := ASSLPrivateKeyFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(GetSSlMode);//vSSLMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList;
+ HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler);
+ End;
{$ELSE}
- lHandler.OnGetPassword := GetSSLPassword;
- lHandler.OnVerifyPeer := SSLVerifyPeer;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(GetSSlVersion);//aSSLMethod;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(@vRESTDWVersionsBase)^);
+// PRESTDWSSLVersions(@SSLVersions)^;
+ {$IFDEF FPC}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := @SSLVerifyPeer;
+ {$ELSE}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := GetSSLPassword;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).OnVerifyPeer := SSLVerifyPeer;
+ {$ENDIF}
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CertFile := ASSLCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.KeyFile := ASSLPrivateKeyFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(GetSSlMode);//vSSLMode;
+ TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList;
+ HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler);
{$ENDIF}
- lHandler.SSLOptions.CertFile := ASSLCertFile;
- lHandler.SSLOptions.KeyFile := ASSLPrivateKeyFile;
- lHandler.SSLOptions.VerifyMode := vSSLVerifyMode;
- lHandler.SSLOptions.VerifyDepth := vSSLVerifyDepth;
- lHandler.SSLOptions.RootCertFile := vASSLRootCertFile;
- lHandler.SSLOptions.Mode := vSSLMode;
- lHandler.SSLOptions.CipherList := vCipherList;
- HTTPServer.IOHandler := lHandler;
End
Else
HTTPServer.IOHandler := Nil;
@@ -5165,7 +5566,7 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean);
With HTTPServer.Bindings.Add do
Begin
IP := ServerIPVersionConfig.IPv4Address;
- IPVersion := Id_IPv4;
+ IPVersion := TIdIpVersion(Id_IPv4);
Port := ServicePort;
End;
End;
@@ -5175,7 +5576,7 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean);
With HTTPServer.Bindings.Add do
Begin
IP := ServerIPVersionConfig.IPv6Address;
- IPVersion := Id_IPv6;
+ IPVersion := TIdIpVersion(Id_IPv6);
Port := ServicePort;
End;
End;
diff --git a/CORE/Source/Wizards/RDWCGIWizard.pas b/CORE/Source/Wizards/RDWCGIWizard.pas
index 9d06dca9..d28285d7 100644
--- a/CORE/Source/Wizards/RDWCGIWizard.pas
+++ b/CORE/Source/Wizards/RDWCGIWizard.pas
@@ -343,7 +343,9 @@
Function GetDelphiGlobalKey : String;
Begin
Result := '';
- {$IF DEFINED(DELPHI12UP)} // delphi 11 Alexandria
+ {$IF DEFINED(DELPHI13UP)} // delphi 12 Athens
+ Result := '\Software\Embarcadero\BDS\37.0\Globals';
+ {$ELSEIF DEFINED(DELPHI12UP)} // delphi 12 Athens
Result := '\Software\Embarcadero\BDS\23.0\Globals';
{$ELSEIF DEFINED(DELPHI11UP)} // delphi 11 Alexandria
Result := '\Software\Embarcadero\BDS\22.0\Globals';
diff --git a/CORE/Source/Wizards/STLWizard.pas b/CORE/Source/Wizards/STLWizard.pas
index e186ceb5..e7400e17 100644
--- a/CORE/Source/Wizards/STLWizard.pas
+++ b/CORE/Source/Wizards/STLWizard.pas
@@ -458,9 +458,12 @@
{$IFDEF ver350} // delphi 11
Result := '\Software\Embarcadero\BDS\22.0\Globals';
{$ENDIF}
- {$IFDEF ver360} // delphi 11
+ {$IFDEF ver360} // delphi 12
Result := '\Software\Embarcadero\BDS\23.0\Globals';
{$ENDIF}
+ {$IFDEF ver370} // delphi 13
+ Result := '\Software\Embarcadero\BDS\37.0\Globals';
+ {$ENDIF}
End;
Function Getideprojectpath: String;
diff --git a/CORE/Source/utils/JSON/uRESTDWJSONInterface.pas b/CORE/Source/utils/JSON/uRESTDWJSONInterface.pas
index a74f6130..76e6dfbf 100644
--- a/CORE/Source/utils/JSON/uRESTDWJSONInterface.pas
+++ b/CORE/Source/utils/JSON/uRESTDWJSONInterface.pas
@@ -28,7 +28,7 @@ interface
{$ENDIF}
Uses
SysUtils, Classes, Variants,
- {$IFDEF RESTDWFMX} system.json, {$ELSE} uRESTDWJSON, {$ENDIF}
+ {$IFNDEF FPC} system.json, {$ELSE} uRESTDWJSON, {$ENDIF}
uRESTDWConsts;
Type
@@ -115,8 +115,7 @@ implementation
result := stringreplace(Astr, Asubstr, '', [rfReplaceAll, rfIgnoreCase]);
End;
-{$IFDEF RESTDWFMX}
-
+{$IFNDEF FPC}
Function GetElementJSON(bArray: TJSONObject; Value: String): String;
Var
I: Integer;
@@ -140,7 +139,7 @@ implementation
Function TRESTDWJSONInterfaceObject.OpenArray(key: String) : TRESTDWJSONInterfaceArray;
Var
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
vEIndex: Integer;
aJSONObject: TJSONObject;
{$ENDIF}
@@ -148,7 +147,7 @@ implementation
aJSONArray : TJSONArray;
Begin
result := TRESTDWJSONInterfaceArray.Create;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If TJSONObject(JSONObject).ClassName = 'TJSONObject' Then
Begin
aJSONObject := TJSONObject.ParseJSONValue(TJSONObject(JSONObject).ToJSON) as TJSONObject;
@@ -172,7 +171,7 @@ implementation
Function TRESTDWJSONInterfaceObject.OpenArray(Index: Integer)
: TRESTDWJSONInterfaceArray;
-{$IFDEF RESTDWFMX}
+{$IFNDEF FPC}
Var
vEIndex: Integer;
aJSONObject: TJSONObject;
@@ -182,7 +181,7 @@ implementation
result := TRESTDWJSONInterfaceArray.Create;
If Assigned(vJSONObject) Then
FreeAndNil(vJSONObject);
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If TJSONObject(JSONObject).ClassName = 'TJSONObject' Then
Begin
aJSONObject := TJSONObject.ParseJSONValue(TJSONObject(JSONObject).ToJSON)
@@ -226,7 +225,7 @@ implementation
result := 0;
If vJSONObject = Nil then
Exit;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
result := TJSONArray(vJSONObject).Size;
{$ELSE}
If TJSONObject(vJSONObject).ClassName = 'TJSONObject' Then
@@ -242,7 +241,7 @@ implementation
Function TRESTDWJSONInterfaceArray.GetObject(Index: Integer)
: TRESTDWJSONInterfaceBase;
Var
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
aJSONObject : TJSONArray;
aJSONValue : TJSONValue;
{$ELSE}
@@ -255,7 +254,7 @@ implementation
vClassName := TJSONObject(vJSONObject).ClassName;
If (Uppercase(TJSONObject(vJSONObject).ClassName) = Uppercase('TJSONArray')) Then
Begin
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
aJSONValue := TJSONObject.ParseJSONValue(TJSONObject(JSONObject).Get(Index).ToJSON);
If aJSONValue is TJSONObject Then
result.vJSONObject := TJSONBaseClass(aJSONValue as TJSONObject)
@@ -289,7 +288,7 @@ implementation
Else If (Uppercase(TJSONObject(vJSONObject).ClassName)
= Uppercase('TJSONObject')) Then
Begin
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
result.vJSONObject := TJSONBaseClass
(TJSONObject.ParseJSONValue(TJSONObject(vJSONObject).Get(Index)
.JSONValue.ToJSON) as TJSONArray);
@@ -322,7 +321,7 @@ implementation
Begin
If Assigned(vJSONObject) Then
FreeAndNil(vJSONObject);
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If JSONValue[InitStrPos] = '[' then
vJSONObject := TJSONBaseClass(TJSONObject.ParseJSONValue(JSONValue) as TJSONArray)
Else If JSONValue[InitStrPos] = '{' then
@@ -351,7 +350,7 @@ implementation
Var
I: Integer;
vElementName, vClassName: String;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
aJSONObject: TJSONObject;
vValueJSON: String;
{$ELSE}
@@ -366,7 +365,7 @@ implementation
Exit;
End;
vClassName := TJSONObject(vJSONObject).ClassName;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If (Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceObject')) Or
(Uppercase(vClassName) = Uppercase('TJSONObject')) Or
(Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceBase')) Then
@@ -509,32 +508,31 @@ implementation
Function TRESTDWJSONInterfaceObject.GetPair(Index: Integer): TRESTDWJSONPair;
Var
vElementName, vClassName: String;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
aJSONObject: TJSONObject;
vValueJSON: String;
{$ELSE}
cNames : TJSONArray;
{$ENDIF}
Begin
- result.isnull := False;
- result.Value := 'null';
- If vJSONObject = Nil Then
+ result.isnull := False;
+ result.Value := 'null';
+ If vJSONObject = Nil Then
Begin
- result.isnull := True;
- Exit;
+ result.isnull := True;
+ Exit;
End;
vClassName := TJSONObject(vJSONObject).ClassName;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If (Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceObject')) Or
- (Uppercase(vClassName) = Uppercase('TJSONObject')) Or
- (Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceBase')) Then
- Begin
+ (Uppercase(vClassName) = Uppercase('TJSONObject')) Or
+ (Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceBase')) Then
+ Begin
If vClassName <> '_String' Then
- Begin
+ Begin
If (TJSONObject(vJSONObject).Count > index) Then
Begin
- result.Name := removestr(TJSONObject(vJSONObject).Pairs[index]
- .JsonString.Value, '"');
+ result.Name := removestr(TJSONObject(vJSONObject).Pairs[index].JsonString.Value, '"');
If TJSONObject(vJSONObject).Pairs[index].JSONValue is TJSONObject Then
Begin
result.ClassName := 'TJSONObject';
@@ -542,8 +540,7 @@ implementation
.JSONValue.toString;
// removestr(TJSONObject(vJSONObject).Pairs[index].JsonValue.tostring, '"');
If (vValueJSON = '') Or (Trim(vValueJSON) = '""') then
- result.Value := TJSONObject(vJSONObject).Pairs[index]
- .JSONValue.Value
+ result.Value := TJSONObject(vJSONObject).Pairs[index].JSONValue.Value
else
result.Value := vValueJSON;
End
@@ -558,36 +555,51 @@ implementation
else
result.Value := vValueJSON;
End;
- End;
- End
+ End;
+ End
Else
- Begin
+ Begin
result.Value := TJSONObject(vJSONObject).Pairs[index].JSONValue.Value;
// removestr(TJSONObject(vJSONObject).Pairs[index].JsonValue.tostring, '"');
- result.ClassName := TJSONObject(vJSONObject).Pairs[index]
- .JSONValue.ClassName;
- End;
- End
+ result.ClassName := TJSONObject(vJSONObject).Pairs[index].JSONValue.ClassName;
+ End;
+ End
Else If Uppercase(vClassName) = Uppercase('TJSONArray') Then
- Begin
- aJSONObject := TJSONObject.ParseJSONValue(TJSONObject(vJSONObject)
- .Get(index).ToJSON) as TJSONObject;
- result.Name := removestr(aJSONObject.Value, '"');
- If (aJSONObject.toString = '') Or (Trim(aJSONObject.toString) = '""') then
- result.Value := ''
+ Begin
+ vClassName := TJSONObject(vJSONObject).Get(index).classname;
+ If Uppercase(vClassName) = Uppercase('TJSONArray') Then
+ Begin
+ aJSONObject := TJSONObject.ParseJSONValue(TJSONObject(vJSONObject).Get(index).ToJSON) as TJSONObject;
+ result.Name := removestr(aJSONObject.Value, '"');
+ If (aJSONObject.toString = '') Or (Trim(aJSONObject.toString) = '""') then
+ result.Value := ''
+ Else
+ result.Value := aJSONObject.toString;
+ result.ClassName := 'TJSONArray';
+ FreeAndNil(aJSONObject);
+ End
Else
- result.Value := aJSONObject.toString;
- result.ClassName := 'TJSONArray';
- FreeAndNil(aJSONObject);
- End
+ Begin
+ result.Name := '';
+ vValueJSON := TJSONObject(vJSONObject).Get(index).tostring;
+ result.Value := removestr(vValueJSON, '""');
+ If vClassName = 'NULL' Then
+ result.ClassName := 'TJSONValue'
+ Else
+ result.ClassName := vClassName;
+ End;
+ End
Else
- Begin
+ Begin
result.Name := '';
result.Value := TJSONValue(vJSONObject).Value;
If (result.Value = '') Or (Trim(result.Value) = '""') then
- result.Value := TJSONObject(vJSONObject).ToJSON;
- result.ClassName := 'TJSONValue';
- End;
+ result.Value := removestr(TJSONObject(vJSONObject).ToJSON, '"');
+ If vClassName = 'NULL' Then
+ result.ClassName := 'TJSONValue'
+ Else
+ result.ClassName := vClassName;
+ End;
{$ELSE}
If (Uppercase(vClassName) = Uppercase('TRESTDWJSONInterfaceObject')) Or
(Uppercase(vClassName) = Uppercase('TJSONObject')) Or
@@ -619,10 +631,10 @@ implementation
If cNames <> Nil Then
FreeAndNil(cNames);
End
- Else
+ Else
Begin
- result.Value := TJSONObject(vJSONObject).toString;
- result.ClassName := TJSONObject(vJSONObject).ClassName;
+ result.Value := TJSONObject(vJSONObject).toString;
+ result.ClassName := TJSONObject(vJSONObject).ClassName;
End;
End
Else If Uppercase(vClassName) = Uppercase('TJSONArray') Then
@@ -647,27 +659,41 @@ implementation
End
Else
Begin
- vClassName := TJSONArray(vJSONObject).optJSONObject(index).ClassName;
- result.ClassName := 'TJSONArray';
- cNames := TJSONObject(TJSONArray(vJSONObject).optJSONObject(index)).names;
- If (cNames.length > 0) And (Uppercase(vClassName) = Uppercase('TJSONArray')) Then
- Begin
- If (cNames.length > index) Then
- Begin
- result.Name := cNames.Get(index).toString;
- result.Value := TJSONObject(TJSONArray(vJSONObject).optJSONObject(index)).Get(result.Name).toString;
- End;
- End
- Else
+ If Not Assigned(TJSONArray(vJSONObject).optJSONObject(index)) Then
Begin
+ vClassName := TJSONArray(vJSONObject).get(index).ClassName;
+ If vClassName = 'NULL' Then
+ result.ClassName := 'tjsonstring';
result.Name := TJSONArray(vJSONObject).Get(index).toString;
- If (Trim(result.Name) = '') Or
+ If (Trim(result.Name) = '') Or (UpperCase(Trim(result.Name)) = 'NULL') Or
((Pos('{', result.Name) > 0) Or (Pos('[', result.Name) > 0)) Then
result.Name := 'arrayobj' + IntToStr(Index);
result.Value := TJSONArray(vJSONObject).opt(Index).toString;
+ End
+ Else
+ Begin
+ vClassName := TJSONArray(vJSONObject).optJSONObject(index).ClassName;
+ result.ClassName := 'TJSONArray';
+ cNames := TJSONObject(TJSONArray(vJSONObject).optJSONObject(index)).names;
+ If (cNames.length > 0) And (Uppercase(vClassName) = Uppercase('TJSONArray')) Then
+ Begin
+ If (cNames.length > index) Then
+ Begin
+ result.Name := cNames.Get(index).toString;
+ result.Value := TJSONObject(TJSONArray(vJSONObject).optJSONObject(index)).Get(result.Name).toString;
+ End;
+ End
+ Else
+ Begin
+ result.Name := TJSONArray(vJSONObject).Get(index).toString;
+ If (Trim(result.Name) = '') Or
+ ((Pos('{', result.Name) > 0) Or (Pos('[', result.Name) > 0)) Then
+ result.Name := 'arrayobj' + IntToStr(Index);
+ result.Value := TJSONArray(vJSONObject).opt(Index).toString;
+ End;
+ If Assigned(cNames) Then
+ FreeAndNil(cNames);
End;
- If Assigned(cNames) Then
- FreeAndNil(cNames);
End;
End
Else
@@ -679,7 +705,7 @@ implementation
If Trim(result.ClassName) = '' Then
result.ClassName := vClassName;
// Correção para null value
- result.isnull := (result.Value = 'null') or (Result.Value = '');
+ result.isnull := ((result.Value = 'null') or (Result.Value = ''));
If result.isnull Then
result.Value := '';
End;
@@ -693,7 +719,7 @@ implementation
result := 0;
If vJSONObject = Nil Then
Exit;
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
If vJSONObject <> Nil Then
result := TJSONObject(vJSONObject).Count;
{$ELSE}
@@ -820,18 +846,18 @@ constructor TRESTDWJSONInterfaceBase.Create(ParentJSON: TJSONBaseClass);
End;
function TRESTDWJSONInterfaceBase.PairCount: Integer;
-{$IFNDEF RESTDWFMX}
+{$IFDEF FPC}
Var
cNames : TJSONArray;
{$ENDIF}
begin
- {$IFDEF RESTDWFMX}
+ {$IFNDEF FPC}
result := TJSONObject(vJSONObject).Count;
- {$ELSE}
- cNames := TJSONObject(vJSONObject).names;
- result := cNames.length;
- FreeAndNil(cNames);
- {$ENDIF}
+ {$ELSE}
+ cNames := TJSONObject(vJSONObject).names;
+ result := cNames.length;
+ FreeAndNil(cNames);
+ {$ENDIF}
end;
end.
diff --git a/CORE/Source/utils/uRESTDWMassiveBuffer.pas b/CORE/Source/utils/uRESTDWMassiveBuffer.pas
index ba37a165..6847600f 100644
--- a/CORE/Source/utils/uRESTDWMassiveBuffer.pas
+++ b/CORE/Source/utils/uRESTDWMassiveBuffer.pas
@@ -98,6 +98,7 @@ interface
Property Items[Index : Integer] : TMassiveValue Read GetRec Write PutRec; Default;
End;
+ PMassiveField = ^TMassiveField;
TMassiveField = Class(TObject)
Private
vMassiveFields : TList;
@@ -116,7 +117,8 @@ interface
Function GetOldValue : Variant;
Procedure SetValue(Value : Variant);
Function GetModified : Boolean;
- Procedure SetFieldType(Value : TObjectValue);
+ Procedure SetFieldType (Value : TObjectValue);
+ Procedure SetAutoGenerateValue(Value : Boolean);
Protected
Public
Constructor Create(MassiveFields : TList; FieldIndex : Integer);
@@ -125,7 +127,7 @@ interface
Procedure LoadFromStream(Stream : TMemoryStream);
Procedure SaveToStream (var Stream : TMemoryStream);
Property Required : Boolean Read vRequired Write vRequired;
- Property AutoGenerateValue : Boolean Read vAutoGenerateValue Write vAutoGenerateValue;
+ Property AutoGenerateValue : Boolean Read vAutoGenerateValue Write SetAutoGenerateValue;
Property KeyField : Boolean Read vKeyField Write vKeyField;
Property ReadOnly : Boolean Read vReadOnly Write vReadOnly;
Property FieldType : TObjectValue Read vFieldType Write SetFieldType;
@@ -137,7 +139,6 @@ interface
Property Modified : Boolean Read GetModified;
End;
- PMassiveField = ^TMassiveField;
TMassiveFields = Class(TList)
Private
vMassiveDataset : TMassiveDataset;
@@ -151,7 +152,8 @@ interface
Procedure Delete(Index : Integer); Overload;
Procedure Delete(FieldName : String); Overload;
Function Add (Item : TMassiveField) : Integer; Overload;
- Function FieldByName(FieldName : String) : TMassiveField;
+ Function FieldByName (FieldName : String) : TMassiveField; Overload;
+ Function FieldByNameP(FieldName : String) : PMassiveField; Overload;
Property Items[Index : Integer] : TMassiveField Read GetRec Write PutRec; Default;
End;
@@ -552,6 +554,11 @@ implementation
End;
End;
+Procedure TMassiveField.SetAutoGenerateValue(Value : Boolean);
+Begin
+ vAutoGenerateValue := Value;
+End;
+
Procedure TMassiveField.SaveToStream(var Stream: TMemoryStream);
Var
vRecNo : Integer;
@@ -724,7 +731,7 @@ implementation
Inherited;
End;
-Function TMassiveFields.FieldByName(FieldName : String): TMassiveField;
+Function TMassiveFields.FieldByName(FieldName : String) : TMassiveField;
Var
I : Integer;
vFieldName,
@@ -764,6 +771,46 @@ implementation
End;
End;
+Function TMassiveFields.FieldByNameP(FieldName : String) : PMassiveField;
+Var
+ I : Integer;
+ vFieldName,
+ vFieldNameB : String;
+ vResult : Boolean;
+ Function StrCompField(A, B : String) : Boolean;
+ Var
+ I, X : Integer;
+ Begin
+ Result := Length(A) > 0;
+ X := 0;
+ For I := 1 To Length(A) Do
+ Begin
+ Result := I <= Length(B);
+ If Result Then
+ Begin
+ Result := A[I] = B[X];
+ If Not Result Then
+ Break;
+ End
+ Else
+ Break;
+ End;
+ End;
+Begin
+ Result := Nil;
+ vFieldNameB := UpperCase(Trim(FieldName));
+ For I := 0 To Self.Count -1 Do
+ Begin
+ vFieldName := UpperCase(Trim(Items[I].vFieldName));
+ vResult := vFieldName = vFieldNameB;
+ If vResult Then
+ Begin
+ Result := TList(Self).Items[I];
+ Break;
+ End;
+ End;
+End;
+
Function TMassiveFields.GetRec(Index : Integer) : TMassiveField;
Begin
Result := Nil;
@@ -963,7 +1010,7 @@ implementation
Dispose(PMassiveValue(TList(Self).Items[Index]));
{$ELSE}
If Assigned(TMassiveValue(TList(Self).Items[Index]^)) Then
- FreeAndNil(TMassiveValue(TList(Self).Items[Index]^));
+ TMassiveValue(TList(Self).Items[Index]^).Free;
Dispose(TList(Self).Items[Index]);
{$ENDIF}
Except
@@ -1710,8 +1757,9 @@ implementation
Procedure TMassiveDatasetBuffer.MassiveCheck(Dataset : TRESTDWClientSQLBase);
Var
- I : Integer;
- MassiveField : TMassiveField;
+ I : Integer;
+ MassiveField : PMassiveField;
+ vAutoGenerateValue : Boolean;
Begin
vMasterCompTag := '';
vMyCompTag := Dataset.Componenttag;
@@ -1740,26 +1788,28 @@ implementation
(vReflectChanges And ((Dataset.Fields[I].ReadOnly) Or
(Not(Dataset.Fields[I].ProviderFlags = [])))) Then
Begin
- MassiveField := vMassiveFields.FieldByName(Dataset.Fields[I].FieldName);
- If MassiveField = Nil Then
+ MassiveField := vMassiveFields.FieldByNameP(Dataset.Fields[I].FieldName);
+ If MassiveField^ = Nil Then
Begin
- MassiveField := TMassiveField.Create(vMassiveFields, vMassiveFields.Count);
- vMassiveFields.Add(MassiveField);
+ New(MassiveField);
+ MassiveField^ := TMassiveField.Create(vMassiveFields, vMassiveFields.Count);
+ vMassiveFields.Add(MassiveField^);
End;
- MassiveField.vReadOnly := Dataset.Fields[I].ReadOnly;
- MassiveField.vRequired := Dataset.Fields[I].Required;
- MassiveField.vKeyField := pfInKey in Dataset.Fields[I].ProviderFlags;
- MassiveField.vFieldName := Dataset.Fields[I].FieldName;
- MassiveField.vFieldType := FieldTypeToObjectValue(Dataset.Fields[I].DataType);
- MassiveField.vSize := Dataset.Fields[I].DataSize;
+ MassiveField^.vReadOnly := Dataset.Fields[I].ReadOnly;
+ MassiveField^.vRequired := Dataset.Fields[I].Required;
+ MassiveField^.vKeyField := pfInKey in Dataset.Fields[I].ProviderFlags;
+ MassiveField^.vFieldName := Dataset.Fields[I].FieldName;
+ MassiveField^.vFieldType := FieldTypeToObjectValue(Dataset.Fields[I].DataType);
+ MassiveField^.vSize := Dataset.Fields[I].DataSize;
{$IFDEF DELPHIXEUP}
- MassiveField.vAutoGenerateValue := ((Dataset.Fields[I].AutoGenerateValue = arAutoInc) Or
- (Lowercase(Dataset.Fields[I].FieldName) = Lowercase(vSequenceField)));
- If Not (MassiveField.vAutoGenerateValue) Then
- MassiveField.vAutoGenerateValue := ((Dataset.Fields[I].FieldKind = fkInternalCalc) Or
+ vAutoGenerateValue := ((Dataset.Fields[I].AutoGenerateValue = arAutoInc) Or
(Lowercase(Dataset.Fields[I].FieldName) = Lowercase(vSequenceField)));
+ MassiveField^.AutoGenerateValue := vAutoGenerateValue;
+ If Not (MassiveField^.AutoGenerateValue) Then
+ MassiveField^.AutoGenerateValue := ((Dataset.Fields[I].FieldKind = fkInternalCalc) Or
+ (Lowercase(Dataset.Fields[I].FieldName) = Lowercase(vSequenceField)));
{$ELSE}
- MassiveField.vAutoGenerateValue := ((Dataset.Fields[I].FieldKind = fkInternalCalc) Or
+ MassiveField^.AutoGenerateValue := ((Dataset.Fields[I].FieldKind = fkInternalCalc) Or
(Lowercase(Dataset.Fields[I].FieldName) = Lowercase(vSequenceField)));
{$ENDIF}
End
@@ -1787,18 +1837,19 @@ implementation
If vMassiveFields.Count > 0 Then
Begin
vMassiveLine.vMassiveMode := mmBrowse;
- MassiveField := vMassiveFields.FieldByName(RESTDWFieldBookmark);
+ MassiveField := vMassiveFields.FieldByNameP(RESTDWFieldBookmark);
If MassiveField = Nil Then
Begin
- MassiveField := TMassiveField.Create(vMassiveFields, vMassiveFields.Count);
+ New(MassiveField);
+ MassiveField^ := TMassiveField.Create(vMassiveFields, vMassiveFields.Count);
vMassiveFields.Add(MassiveField);
End;
- MassiveField.vRequired := False;
- MassiveField.vKeyField := False;
- MassiveField.vFieldName := RESTDWFieldBookmark;
- MassiveField.vFieldType := ovString;
- MassiveField.vSize := 60;
- MassiveField.vAutoGenerateValue := True;
+ MassiveField^.vRequired := False;
+ MassiveField^.vKeyField := False;
+ MassiveField^.vFieldName := RESTDWFieldBookmark;
+ MassiveField^.vFieldType := ovString;
+ MassiveField^.vSize := 60;
+ MassiveField^.vAutoGenerateValue := True;
End;
End;
If Dataset Is TRESTDWClientSQL Then
diff --git a/CORE/Source/utils/uRESTDWOpenSslLib.pas b/CORE/Source/utils/uRESTDWOpenSslLib.pas
index 5d51f81b..60dd24f7 100644
--- a/CORE/Source/utils/uRESTDWOpenSslLib.pas
+++ b/CORE/Source/utils/uRESTDWOpenSslLib.pas
@@ -22498,7 +22498,7 @@ function LoadCrypto : boolean;
{$IFDEF FPC}
Pointer(OpenSSL_version_num) := GetProcAddress(RESTDW_CRYPYO_DLL_Handle, 'OpenSSL_version_num');
{$ELSE}
- OpenSSL_version_num := GetProcAddress(RESTDW_CRYPYO_DLL_Handle, 'OpenSSL_version_num');
+ // OpenSSL_version_num := GetProcAddress(RESTDW_CRYPYO_DLL_Handle, 'OpenSSL_version_num');
{$ENDIF}
if @OpenSSL_version_num = nil then begin
FreeLibrary(RESTDW_CRYPYO_DLL_Handle);