Browse Source

Merge branch 'develop'

Unknown 6 years ago
parent
commit
e05df4d056
66 changed files with 6581 additions and 6 deletions
  1. 33 0
      Quick.Threads.pas
  2. 14 6
      README.md
  3. 15 0
      samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.dpr
  4. 652 0
      samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.dproj
  5. BIN
      samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.res
  6. 52 0
      samples/delphi/QuickConfig/ConfigToFile/Main.dfm
  7. 208 0
      samples/delphi/QuickConfig/ConfigToFile/Main.pas
  8. 1309 0
      samples/delphi/QuickConfig/ConfigToFile/Win64/Debug/config.json
  9. 72 0
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Main.dfm
  10. 296 0
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Main.pas
  11. 15 0
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.dpr
  12. 652 0
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.dproj
  13. BIN
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.res
  14. 217 0
      samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Win64/Debug/Config.json
  15. 52 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/AndroidManifest.xml
  16. 52 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/AndroidManifest.xml
  17. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/classes/classes.dex
  18. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/library/lib/armeabi-v7a/gdbserver
  19. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-hdpi/ic_launcher.png
  20. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-large/splash_image.png
  21. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-ldpi/ic_launcher.png
  22. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-mdpi/ic_launcher.png
  23. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-normal/splash_image.png
  24. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-small/splash_image.png
  25. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xhdpi/ic_launcher.png
  26. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xlarge/splash_image.png
  27. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xxhdpi/ic_launcher.png
  28. 9 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable/splash_image_def.xml
  29. 6 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/values-v21/styles.xml
  30. 6 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/values/styles.xml
  31. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/classes.dex
  32. 9 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/splash_image_def.xml
  33. 6 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/styles-v21.xml
  34. 6 0
      samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/styles.xml
  35. 43 0
      samples/firemonkey/QuickConfig/ConfigToFile/AndroidManifest.template.xml
  36. 232 0
      samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.deployproj
  37. 14 0
      samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.dpr
  38. 960 0
      samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.dproj
  39. BIN
      samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.res
  40. 48 0
      samples/firemonkey/QuickConfig/ConfigToFile/Main.fmx
  41. 207 0
      samples/firemonkey/QuickConfig/ConfigToFile/Main.pas
  42. 217 0
      samples/firemonkey/QuickConfig/ConfigToFile/Win32/Debug/config.json
  43. 217 0
      samples/firemonkey/QuickConfig/ConfigToFile/Win64/Debug/config.json
  44. 21 0
      samples/fpc/QuickConfig/ConfigToFile/Config.json
  45. BIN
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.ico
  46. 21 0
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.json
  47. 80 0
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.lpi
  48. 20 0
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.lpr
  49. 14 0
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.pas
  50. BIN
      samples/fpc/QuickConfig/ConfigToFile/QuickConfig.res
  51. BIN
      samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/QuickConfig.or
  52. BIN
      samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/QuickConfig.res
  53. 39 0
      samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/umain.lfm
  54. 39 0
      samples/fpc/QuickConfig/ConfigToFile/umain.lfm
  55. 220 0
      samples/fpc/QuickConfig/ConfigToFile/umain.pas
  56. 21 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/Config.json
  57. BIN
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.ico
  58. 86 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.lpi
  59. 20 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.lpr
  60. 13 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.pas
  61. BIN
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.res
  62. BIN
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/QuickConfig.or
  63. BIN
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/QuickConfig.res
  64. 57 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/umain.lfm
  65. 57 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/umain.lfm
  66. 254 0
      samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/umain.pas

+ 33 - 0
Quick.Threads.pas

@@ -231,6 +231,9 @@ type
     function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartOnDayChange : IScheduledTask;
     function StartOnDayChange : IScheduledTask;
+    function StartNow : IScheduledTask;
+    function StartInMinutes(aMinutes : Word) : IScheduledTask;
+    function StartInSeconds(aSeconds : Word) : IScheduledTask;
     procedure RunOnce;
     procedure RunOnce;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
@@ -319,6 +322,9 @@ type
     function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
     function StartOnDayChange : IScheduledTask;
     function StartOnDayChange : IScheduledTask;
+    function StartNow : IScheduledTask;
+    function StartInMinutes(aMinutes : Word) : IScheduledTask;
+    function StartInSeconds(aSeconds : Word) : IScheduledTask;
     procedure RunOnce;
     procedure RunOnce;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
     procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
@@ -1249,6 +1255,33 @@ begin
   fNextExecution := aStartDate;
   fNextExecution := aStartDate;
 end;
 end;
 
 
+function TScheduledTask.StartInMinutes(aMinutes: Word): IScheduledTask;
+begin
+  Result := Self;
+  ClearSchedule;
+  fScheduleMode := TScheduleMode.smRunOnce;
+  fStartDate := IncMinute(Now(),aMinutes);
+  fNextExecution := fStartDate;
+end;
+
+function TScheduledTask.StartInSeconds(aSeconds: Word): IScheduledTask;
+begin
+  Result := Self;
+  ClearSchedule;
+  fScheduleMode := TScheduleMode.smRunOnce;
+  fStartDate := IncSecond(Now(),aSeconds);
+  fNextExecution := fStartDate;
+end;
+
+function TScheduledTask.StartNow: IScheduledTask;
+begin
+  Result := Self;
+  ClearSchedule;
+  fScheduleMode := TScheduleMode.smRunOnce;
+  fStartDate := Now();
+  fNextExecution := fStartDate;
+end;
+
 function TScheduledTask.StartOnDayChange: IScheduledTask;
 function TScheduledTask.StartOnDayChange: IScheduledTask;
 begin
 begin
   Result := Self;
   Result := Self;

+ 14 - 6
README.md

@@ -314,21 +314,29 @@ TAnonymousThread.Execute(
 ```
 ```
 - **TScheduledTasks:** Alternative to Timer. You can assign tasks with start time, repeat options and expiration date. Use AddTask_Sync, OnTerminate_Sync and OnExpired_Sync if code needs to update UI.
 - **TScheduledTasks:** Alternative to Timer. You can assign tasks with start time, repeat options and expiration date. Use AddTask_Sync, OnTerminate_Sync and OnExpired_Sync if code needs to update UI.
 You can assign anonymous methods to execute, exception, terminate and expiration events.
 You can assign anonymous methods to execute, exception, terminate and expiration events.
+- *Add a task to execute:*
   - *AddTask:* Specify Task name, parameters to pass to anonymous method(If OwnedParams=true, task will free params on expiration task) and method than will be executed. 
   - *AddTask:* Specify Task name, parameters to pass to anonymous method(If OwnedParams=true, task will free params on expiration task) and method than will be executed. 
   - *AddTask_Sync:* Like AddTask but runs code with synchronize thread method (avoids problems if your code updates UI).
   - *AddTask_Sync:* Like AddTask but runs code with synchronize thread method (avoids problems if your code updates UI).
+- *Define events to control:*
   - *OnTerminate:* Specify code to execute when task finishes.
   - *OnTerminate:* Specify code to execute when task finishes.
   - *OnTerminate_Sync:* Like OnTerminate but runs code with syncronized thread method (avoids problems if your code updates UI).
   - *OnTerminate_Sync:* Like OnTerminate but runs code with syncronized thread method (avoids problems if your code updates UI).
   - *OnExpire:* Specify code to execute when task expiration reached or task was cancelled.
   - *OnExpire:* Specify code to execute when task expiration reached or task was cancelled.
   - *OnExpire_Sync:* Like OnExpire but runs code with synchronized thread method (avoids problems if your code updates UI).
   - *OnExpire_Sync:* Like OnExpire but runs code with synchronized thread method (avoids problems if your code updates UI).
   - *OnException:* Specify code to execute when task generates an exception.
   - *OnException:* Specify code to execute when task generates an exception.
-  - *StartAt:* Date and time to start task. You need to define after .RunOnce or .RunEvery if you want to repeat task.
-  - *StartTodayAt:* Start task today at defined time. You need to define after .RunOnce or .RunEvery if you want to repeat task.
-  - *StartTomorrowAt:* Start task tomorrow at defined time. You need to define after .RunOnce or .RunEvery if you want to repeat task.
-  - *StartOnDayChange:* Start task when day changes. You need to define after .RunOnce if you want to execute only one time or .RunEveryDay if you want to repeat task.
-  - *RunOnce:* Task will executed only one time. If there aren't a previous StartAt, task will be executed immediately.
-  - *RepeatEvery:* Can indicate repeat step over time and expiration date. If not previous StartAt was specified, task will be executed immediately.
+- *Define when to start task:*
+  - *StartNow:* Start task immediately.
+  - *StartAt:* Date and time to start task. 
+  - *StartTodayAt:* Start task today at defined time.
+  - *StartTomorrowAt:* Start task tomorrow at defined time.
+  - *StartOnDayChange:* Start task when day changes.
+  - *StartInMinutes:* Start task after x minutes.
+  - *StartInSeconds:* Start task after x seconds.
+- *Define if needs to repeat or not (if not defined a previous StartAt, StartOn, etc, task will be executed immediately):*
+  - *RunOnce:* Task will be executed one time only. 
+  - *RepeatEvery:* Can indicate repeat step over time and expiration date.
   - *RepeatEveryDay:* Repeat task every day at same hour.
   - *RepeatEveryDay:* Repeat task every day at same hour.
   - *RepeatEveryWeek:* Repeat task every week at same hour.
   - *RepeatEveryWeek:* Repeat task every week at same hour.
+- *Start/Stop scheduler:*
   - *Start:* Starts scheduler.
   - *Start:* Starts scheduler.
   - *Stop:* Stops scheduler.
   - *Stop:* Stops scheduler.
 ```delphi
 ```delphi

+ 15 - 0
samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.dpr

@@ -0,0 +1,15 @@
+program ConfigToFile;
+
+uses
+  Vcl.Forms,
+  Main in 'Main.pas' {MainForm};
+
+{$R *.res}
+
+begin
+  ReportMemoryLeaksOnShutdown := True;
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TMainForm, MainForm);
+  Application.Run;
+end.

+ 652 - 0
samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.dproj

@@ -0,0 +1,652 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{CDEBAD41-A241-457F-96FD-E367D8E3B0AE}</ProjectGuid>
+        <ProjectVersion>18.5</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <MainSource>ConfigToFile.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
+        <Base_Win32>true</Base_Win32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+        <Cfg_1>true</Cfg_1>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+        <Cfg_2>true</Cfg_2>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
+        <Cfg_2_Win64>true</Cfg_2_Win64>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base)'!=''">
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <DCC_F>false</DCC_F>
+        <DCC_K>false</DCC_K>
+        <DCC_UsePackage>RESTComponents;FireDACIBDriver;FireDACCommon;RESTBackendComponents;soapserver;CloudService;FireDACCommonDriver;inet;FireDAC;FireDACSqliteDriver;soaprtl;soapmidas;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
+        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
+        <SanitizedProjectName>ConfigToFile</SanitizedProjectName>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;UbuntuProgressPackage;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;svnui;JvGlobus;FireDACADSDriver;JvPluginSystem;JvMM;vacommpkgdXE11;tmsxlsdXE11;vcltouch;JvBands;vcldb;bindcompfmx;svn;Intraweb;JvJans;JvNet;inetdb;JvAppFrm;EssentialsDR;vcwdedXE11;vcwdXE11;FmxTeeUI;JvDotNetCtrls;AbbreviaVCLD;fmx;fmxdae;tmsdXE11;vclib;JvWizards;tmsexdXE11;dbexpress;IndyCore;vclx;JvPageComps;dsnap;JvDB;VCLRESTComponents;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;JvCmp;FireDACMySQLDriver;JvHMI;FireDACCommonODBC;LockBoxDR;bindcompdbx;IndyIPCommon;JvCustom;advchartdedxe11;vcl;IndyIPServer;GR32_D;JvXPCtrls;PngComponents;IndySystem;advchartdxe11;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;vacommpkgdedXE11;TeeDB;Jcl;madBasic_;JvCore;JvCrypt;FireDACPgDriver;ibmonitor;FMXTee;SevenZippro;DbxCommonDriver;JvDlgs;JvRuntimeDesign;ibxpress;Tee;JvManagedThreads;xmlrtl;ibxbindings;fmxobj;vclwinx;JvTimeFramework;rtl;GR32_R;DbxClientDriver;QuickVCL;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;DCEF_DX10;bindcomp;appanalytics;tmswizdXE11;CoolTrayIcon_D210_XE7;IndyIPClient;bindcompvcl;TeeUI;TMSFMXPackPkgDXE11;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;JclVcl;Gauge3D;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;JvControls;JvPrintPreview;Analog_XE7;JclContainers;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;FireDACADSDriver;vcltouch;vcldb;bindcompfmx;Intraweb;inetdb;EssentialsDR;vcwdXE11;FmxTeeUI;AbbreviaVCLD;fmx;fmxdae;tmsdXE11;vclib;tmsexdXE11;dbexpress;IndyCore;vclx;dsnap;VCLRESTComponents;vclie;bindengine;DBXMySQLDriver;FireDACMySQLDriver;FireDACCommonODBC;bindcompdbx;IndyIPCommon;vcl;IndyIPServer;IndySystem;advchartdxe11;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;TeeDB;FireDACPgDriver;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;Tee;xmlrtl;ibxbindings;fmxobj;vclwinx;rtl;DbxClientDriver;QuickVCL;CustomIPTransport;vcldsnap;DCEF_DX10;bindcomp;appanalytics;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+        <DCC_RemoteDebug>true</DCC_RemoteDebug>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <DCC_RemoteDebug>false</DCC_RemoteDebug>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="Main.pas">
+            <Form>MainForm</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType>Application</Borland.ProjectType>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">ConfigToFile.dpr</Source>
+                </Source>
+            </Delphi.Personality>
+            <Deployment Version="3">
+                <DeployFile LocalName="Win64\Debug\ConfigToFile.rsm" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win64">
+                        <RemoteName>ConfigToFile.rsm</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win32\Debug\ConfigToFile.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>ConfigToFile.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win64\Debug\ConfigToFile.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win64">
+                        <RemoteName>ConfigToFile.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidClassesDexFile">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1024">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1536">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2048">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch768">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch320">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640x1136">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceResourceRules">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSResource">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXDebug">
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXResource">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Linux64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+            </Deployment>
+            <Platforms>
+                <Platform value="Win32">True</Platform>
+                <Platform value="Win64">True</Platform>
+            </Platforms>
+            <ModelSupport>False</ModelSupport>
+        </BorlandProject>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
+    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
+    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
+</Project>

BIN
samples/delphi/QuickConfig/ConfigToFile/ConfigToFile.res


+ 52 - 0
samples/delphi/QuickConfig/ConfigToFile/Main.dfm

@@ -0,0 +1,52 @@
+object MainForm: TMainForm
+  AlignWithMargins = True
+  Left = 0
+  Top = 0
+  Caption = 'Quick Config Demo'
+  ClientHeight = 493
+  ClientWidth = 720
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  DesignSize = (
+    720
+    493)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object meInfo: TMemo
+    Left = 8
+    Top = 8
+    Width = 704
+    Height = 441
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+  end
+  object btnLoadFile: TButton
+    Left = 407
+    Top = 464
+    Width = 145
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Load From File'
+    TabOrder = 1
+    OnClick = btnLoadFileClick
+  end
+  object btnSaveFile: TButton
+    Left = 558
+    Top = 464
+    Width = 154
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Save To File'
+    TabOrder = 2
+    OnClick = btnSaveFileClick
+  end
+end

+ 208 - 0
samples/delphi/QuickConfig/ConfigToFile/Main.pas

@@ -0,0 +1,208 @@
+unit Main;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.StdCtrls,
+  System.Generics.Collections,
+  Quick.Config.Json;
+
+type
+
+  TMyPriority = (msLow, msMed, msHigh);
+
+  TWinPos = record
+  public
+    PosX : Integer;
+    PosY : Integer;
+  end;
+
+  TProcessType = record
+    Id : Integer;
+    Priority : TMyPriority;
+    Redundant : Boolean;
+  end;
+
+  TWorker = class
+  private
+    fName : string;
+    fActive : Boolean;
+  published
+    property Name : string read fName write fName;
+    property Active : Boolean read fActive write fActive;
+  end;
+
+  TMyConfig = class(TAppConfigJson)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArray<Integer>;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  published
+    property Sizes : TArray<Integer> read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+  end;
+
+  TMainForm = class(TForm)
+    meInfo: TMemo;
+    btnLoadFile: TButton;
+    btnSaveFile: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure btnSaveFileClick(Sender: TObject);
+    procedure btnLoadFileClick(Sender: TObject);
+    procedure SetConfig(cConfig: TMyConfig);
+    function TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  end;
+
+var
+  MainForm: TMainForm;
+  ConfigTest : TMyConfig;
+  ConfigReg : TMyConfig;
+
+implementation
+
+{$R *.dfm}
+
+procedure TMainForm.btnLoadFileClick(Sender: TObject);
+begin
+  meInfo.Lines.Add('Load ConfigReg');
+  ConfigReg.Load;
+  meInfo.Lines.Add(ConfigReg.ToJSON);
+  if TestConfig(configtest,ConfigReg) then meInfo.Lines.Add('Test passed successfully!');
+ end;
+
+procedure TMainForm.btnSaveFileClick(Sender: TObject);
+begin
+  SetConfig(ConfigReg);
+  ConfigReg.Save;
+  meInfo.Lines.Add('Saved Config in Registry at ' + DateTimeToStr(ConfigReg.LastSaved));
+end;
+
+procedure TMainForm.SetConfig(cConfig : TMyConfig);
+var
+  winpos : TWinpos;
+  protype : TProcessType;
+  i : Integer;
+  worker : TWorker;
+begin
+  cConfig.LastFilename := 'library.txt';
+  cConfig.Sizes := [23,11,554,12,34,29,77,30,48,59,773,221,98,3,22,983,122,231,433,12,31,987];
+  winpos.PosX := 640;
+  winpos.PosX := 480;
+  cConfig.WindowPos := winpos;
+  protype.Priority := msHigh;
+  protype.Redundant := False;
+  cConfig.Complex := protype;
+  cConfig.Title := 'a fresh title';
+  cConfig.SessionName := 'First Session';
+  for I := 0 to 22 do
+  begin
+    worker := TWorker.Create;
+    worker.Name := 'Process ' + i.ToString;
+    worker.Active := Boolean(Random(1));
+    cConfig.WorkList.Add(worker);
+  end;
+  for i := 0 to 15 do
+  begin
+    protype.Id := i;
+    protype.Priority := msLow;
+    protype.Redundant := True;
+    cConfig.History := cConfig.History + [protype];
+  end;
+  cConfig.ModifyDate := Now();
+end;
+
+function  TMainForm.TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+var
+  i : Integer;
+begin
+  Result := False;
+  try
+    Assert(cConfig1.LastFilename = cConfig2.LastFilename);
+    for i := Low(cConfig1.Sizes) to High(cConfig1.Sizes) do
+      Assert(cConfig1.Sizes[i] = cConfig2.Sizes[i]);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.Complex.Priority = cConfig2.Complex.Priority);
+    Assert(cConfig1.Complex.Redundant  = cConfig2.Complex.Redundant);
+    Assert(cConfig1.Title = cConfig2.Title);
+    for i := 0 to cConfig1.WorkList.Count - 1 do
+    begin
+      Assert(cConfig1.WorkList[i].Name = cConfig2.WorkList[i].Name);
+      Assert(cConfig1.WorkList[i].Active = cConfig2.WorkList[i].Active);
+    end;
+    for i := 0 to High(cConfig1.History) do
+    begin
+      Assert(cConfig1.History[i].Priority = cConfig2.History[i].Priority);
+      Assert(cConfig1.History[i].Redundant = cConfig2.History[i].Redundant);
+    end;
+    Result := True;
+  except
+    ShowMessage('Configuration not has been saved previously or has a corruption problem');
+  end;
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Assigned(ConfigReg) then ConfigReg.Free;
+  if Assigned(ConfigTest) then ConfigTest.Free;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+  ConfigReg := TMyConfig.Create;
+  ConfigReg.Provider.Filename := '.\config.json';
+  //create config test to compare later
+  ConfigTest := TMyConfig.Create;
+  SetConfig(ConfigTest);
+end;
+
+{ TMyConfig }
+
+constructor TMyConfig.Create;
+begin
+  inherited Create;
+  WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfig.DefaultValues;
+begin
+  inherited;
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfig.Destroy;
+begin
+  if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+end.

+ 1309 - 0
samples/delphi/QuickConfig/ConfigToFile/Win64/Debug/config.json

@@ -0,0 +1,1309 @@
+{
+    "Sizes": [
+        23,
+        11,
+        554,
+        12,
+        34,
+        29,
+        77,
+        30,
+        48,
+        59,
+        773,
+        221,
+        98,
+        3,
+        22,
+        983,
+        122,
+        231,
+        433,
+        12,
+        31,
+        987
+    ],
+    "LastFilename": "library.txt",
+    "WindowPos": {
+        "PosX": 480,
+        "PosY": 0
+    },
+    "History": [
+        {
+            "Id": 0,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 1,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 2,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 3,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 4,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 5,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 6,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 7,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 8,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 9,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 10,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 11,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 12,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 13,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 14,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 15,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 0,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 1,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 2,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 3,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 4,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 5,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 6,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 7,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 8,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 9,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 10,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 11,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 12,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 13,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 14,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 15,
+            "Priority": "msLow",
+            "Redundant": true
+        }
+    ],
+    "Complex": {
+        "Id": 19,
+        "Priority": "msHigh",
+        "Redundant": false
+    },
+    "ModifyDate": "2019-01-17T13:40:39.650Z",
+    "Title": "a fresh title",
+    "SessionName": "First Session",
+    "WorkList": {
+        "List": [
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            },
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            }
+        ]
+    }
+}

+ 72 - 0
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Main.dfm

@@ -0,0 +1,72 @@
+object MainForm: TMainForm
+  AlignWithMargins = True
+  Left = 0
+  Top = 0
+  Caption = 'Quick Config Demo'
+  ClientHeight = 493
+  ClientWidth = 720
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  DesignSize = (
+    720
+    493)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object meInfo: TMemo
+    Left = 8
+    Top = 8
+    Width = 704
+    Height = 419
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+  end
+  object btnLoadJson: TButton
+    Left = 407
+    Top = 433
+    Width = 145
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Load From Json'
+    TabOrder = 1
+    OnClick = btnLoadJsonClick
+  end
+  object btnSaveJson: TButton
+    Left = 558
+    Top = 433
+    Width = 154
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Save To Json'
+    TabOrder = 2
+    OnClick = btnSaveJsonClick
+  end
+  object btnLoadRegistry: TButton
+    Left = 407
+    Top = 464
+    Width = 145
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Load From Registry'
+    TabOrder = 3
+    OnClick = btnLoadRegistryClick
+  end
+  object SaveRegistry: TButton
+    Left = 558
+    Top = 464
+    Width = 154
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = 'Save To Registry'
+    TabOrder = 4
+    OnClick = SaveRegistryClick
+  end
+end

+ 296 - 0
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Main.pas

@@ -0,0 +1,296 @@
+unit Main;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.StdCtrls,
+  System.Generics.Collections,
+  Quick.Config.Base,
+  Quick.Config.Registry,
+  Quick.Config.Json;
+
+type
+
+  TMyPriority = (msLow, msMed, msHigh);
+
+  TWinPos = record
+  public
+    PosX : Integer;
+    PosY : Integer;
+  end;
+
+  TProcessType = record
+    Id : Integer;
+    Priority : TMyPriority;
+    Redundant : Boolean;
+  end;
+
+  TWorker = class
+  private
+    fName : string;
+    fActive : Boolean;
+  published
+    property Name : string read fName write fName;
+    property Active : Boolean read fActive write fActive;
+  end;
+
+  TMyConfigFile = class(TAppConfigJson)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArray<Integer>;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  published
+    property Sizes : TArray<Integer> read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+  end;
+
+  TMyConfigReg = class(TAppConfigRegistry)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArray<Integer>;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  published
+    property Sizes : TArray<Integer> read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+  end;
+
+  TMainForm = class(TForm)
+    meInfo: TMemo;
+    btnLoadJson: TButton;
+    btnSaveJson: TButton;
+    btnLoadRegistry: TButton;
+    SaveRegistry: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure btnLoadJsonClick(Sender: TObject);
+    procedure btnSaveJsonClick(Sender: TObject);
+    procedure SaveRegistryClick(Sender: TObject);
+    procedure btnLoadRegistryClick(Sender: TObject);
+    procedure SetConfig(cConfig: TAppConfig);
+    function TestConfig(cConfig1 : TMyConfigFile; cConfig2 : TMyConfigReg) : Boolean;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  end;
+
+var
+  MainForm: TMainForm;
+  ConfigJson : TMyConfigFile;
+  ConfigReg : TMyConfigReg;
+
+implementation
+
+{$R *.dfm}
+
+procedure TMainForm.btnLoadJsonClick(Sender: TObject);
+var
+  configtest : TMyConfigReg;
+begin
+  meInfo.Lines.Add('Load ConfigJson');
+  configtest := TMyConfigReg.Create;
+  try
+    SetConfig(configtest);
+    ConfigJson.Load;
+    meInfo.Lines.Add(ConfigJson.ToJSON);
+    if TestConfig(ConfigJson,configtest) then meInfo.Lines.Add('Test passed successfully!');
+  finally
+    configtest.Free;
+  end;
+end;
+
+procedure TMainForm.btnLoadRegistryClick(Sender: TObject);
+var
+  configtest : TMyConfigFile;
+begin
+  meInfo.Lines.Add('Load ConfigReg');
+  configtest := TMyConfigFile.Create;
+  try
+    SetConfig(configtest);
+    ConfigReg.Load;
+    meInfo.Lines.Add(ConfigReg.ToJSON);
+   if TestConfig(configtest,ConfigReg) then meInfo.Lines.Add('Test passed successfully!');
+  finally
+    configtest.Free;
+  end;
+end;
+
+procedure TMainForm.btnSaveJsonClick(Sender: TObject);
+begin
+  SetConfig(ConfigJson);
+  ConfigJson.Save;
+  meInfo.Lines.Add('Saved Config in Json at ' + DateTimeToStr(ConfigJson.LastSaved));
+end;
+
+procedure TMainForm.SaveRegistryClick(Sender: TObject);
+begin
+  SetConfig(ConfigReg);
+  ConfigReg.Save;
+  meInfo.Lines.Add('Saved Config in Registry at ' + DateTimeToStr(ConfigReg.LastSaved));
+end;
+
+procedure TMainForm.SetConfig(cConfig : TAppConfig);
+var
+  winpos : TWinpos;
+  protype : TProcessType;
+  i : Integer;
+  worker : TWorker;
+  test : TMyConfigFile;
+begin
+  test := TMyConfigFile(cConfig);
+  test.LastFilename := 'library.txt';
+  test.Sizes := [23,11,554,12,34,29,77,30,48,59,773,221,98,3,22,983,122,231,433,12,31,987];
+  winpos.PosX := 640;
+  winpos.PosX := 480;
+  test.WindowPos := winpos;
+  protype.Priority := msHigh;
+  protype.Redundant := False;
+  test.Complex := protype;
+  test.Title := 'a fresh title';
+  test.SessionName := 'First Session';
+  for I := 0 to 22 do
+  begin
+    worker := TWorker.Create;
+    worker.Name := 'Process ' + i.ToString;
+    worker.Active := Boolean(Random(1));
+    test.WorkList.Add(worker);
+  end;
+  for i := 0 to 15 do
+  begin
+    protype.Id := i;
+    protype.Priority := msLow;
+    protype.Redundant := True;
+    test.History := test.History + [protype];
+  end;
+  test.ModifyDate := Now();
+end;
+
+function  TMainForm.TestConfig(cConfig1 : TMyConfigFile; cConfig2 : TMyConfigReg) : Boolean;
+var
+  i : Integer;
+begin
+  Result := False;
+  try
+    Assert(cConfig1.LastFilename = cConfig2.LastFilename);
+    for i := Low(cConfig1.Sizes) to High(cConfig1.Sizes) do
+      Assert(cConfig1.Sizes[i] = cConfig2.Sizes[i]);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.Complex.Priority = cConfig2.Complex.Priority);
+    Assert(cConfig1.Complex.Redundant  = cConfig2.Complex.Redundant);
+    Assert(cConfig1.Title = cConfig2.Title);
+    for i := 0 to cConfig1.WorkList.Count - 1 do
+    begin
+      Assert(cConfig1.WorkList[i].Name = cConfig2.WorkList[i].Name);
+      Assert(cConfig1.WorkList[i].Active = cConfig2.WorkList[i].Active);
+    end;
+    for i := 0 to High(cConfig1.History) do
+    begin
+      Assert(cConfig1.History[i].Priority = cConfig2.History[i].Priority);
+      Assert(cConfig1.History[i].Redundant = cConfig2.History[i].Redundant);
+    end;
+    Result := True;
+  except
+    ShowMessage('Configuration not has been saved previously or has a corruption problem');
+  end;
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Assigned(ConfigReg) then ConfigReg.Free;
+  if Assigned(ConfigJson) then ConfigJson.Free;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+  ConfigJson := TMyConfigFile.Create;
+  ConfigJson.Provider.CreateIfNotExists := True;
+  ConfigJson.Provider.Filename := 'Config.json';
+  ConfigReg := TMyConfigReg.Create;
+  ConfigReg.Provider.HRoot := HKEY_CURRENT_USER;
+  ConfigReg.Provider.MainKey := '_AppConfig';
+end;
+
+{ TMyConfig }
+
+constructor TMyConfigFile.Create;
+begin
+  inherited;
+  WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfigFile.DefaultValues;
+begin
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfigFile.Destroy;
+begin
+  if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+{ TMyConfigReg }
+
+constructor TMyConfigReg.Create;
+begin
+  inherited;
+  WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfigReg.DefaultValues;
+begin
+  inherited;
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfigReg.Destroy;
+begin
+  if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+end.

+ 15 - 0
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.dpr

@@ -0,0 +1,15 @@
+program QuickConfigDemo;
+
+uses
+  Vcl.Forms,
+  Main in 'Main.pas' {MainForm};
+
+{$R *.res}
+
+begin
+  ReportMemoryLeaksOnShutdown := True;
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TMainForm, MainForm);
+  Application.Run;
+end.

+ 652 - 0
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.dproj

@@ -0,0 +1,652 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{CDEBAD41-A241-457F-96FD-E367D8E3B0AE}</ProjectGuid>
+        <ProjectVersion>18.5</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <MainSource>QuickConfigDemo.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Platform Condition="'$(Platform)'==''">Win64</Platform>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
+        <Base_Win32>true</Base_Win32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+        <Cfg_1>true</Cfg_1>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+        <Cfg_2>true</Cfg_2>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
+        <Cfg_2_Win64>true</Cfg_2_Win64>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base)'!=''">
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <DCC_F>false</DCC_F>
+        <DCC_K>false</DCC_K>
+        <DCC_UsePackage>RESTComponents;FireDACIBDriver;FireDACCommon;RESTBackendComponents;soapserver;CloudService;FireDACCommonDriver;inet;FireDAC;FireDACSqliteDriver;soaprtl;soapmidas;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
+        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
+        <SanitizedProjectName>QuickConfigDemo</SanitizedProjectName>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;UbuntuProgressPackage;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;svnui;JvGlobus;FireDACADSDriver;JvPluginSystem;JvMM;vacommpkgdXE11;tmsxlsdXE11;vcltouch;JvBands;vcldb;bindcompfmx;svn;Intraweb;JvJans;JvNet;inetdb;JvAppFrm;EssentialsDR;vcwdedXE11;vcwdXE11;FmxTeeUI;JvDotNetCtrls;AbbreviaVCLD;fmx;fmxdae;tmsdXE11;vclib;JvWizards;tmsexdXE11;dbexpress;IndyCore;vclx;JvPageComps;dsnap;JvDB;VCLRESTComponents;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;JvCmp;FireDACMySQLDriver;JvHMI;FireDACCommonODBC;LockBoxDR;bindcompdbx;IndyIPCommon;JvCustom;advchartdedxe11;vcl;IndyIPServer;GR32_D;JvXPCtrls;PngComponents;IndySystem;advchartdxe11;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;vacommpkgdedXE11;TeeDB;Jcl;madBasic_;JvCore;JvCrypt;FireDACPgDriver;ibmonitor;FMXTee;SevenZippro;DbxCommonDriver;JvDlgs;JvRuntimeDesign;ibxpress;Tee;JvManagedThreads;xmlrtl;ibxbindings;fmxobj;vclwinx;JvTimeFramework;rtl;GR32_R;DbxClientDriver;QuickVCL;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;DCEF_DX10;bindcomp;appanalytics;tmswizdXE11;CoolTrayIcon_D210_XE7;IndyIPClient;bindcompvcl;TeeUI;TMSFMXPackPkgDXE11;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;JclVcl;Gauge3D;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;JvControls;JvPrintPreview;Analog_XE7;JclContainers;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;FireDACADSDriver;vcltouch;vcldb;bindcompfmx;Intraweb;inetdb;EssentialsDR;vcwdXE11;FmxTeeUI;AbbreviaVCLD;fmx;fmxdae;tmsdXE11;vclib;tmsexdXE11;dbexpress;IndyCore;vclx;dsnap;VCLRESTComponents;vclie;bindengine;DBXMySQLDriver;FireDACMySQLDriver;FireDACCommonODBC;bindcompdbx;IndyIPCommon;vcl;IndyIPServer;IndySystem;advchartdxe11;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;TeeDB;FireDACPgDriver;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;Tee;xmlrtl;ibxbindings;fmxobj;vclwinx;rtl;DbxClientDriver;QuickVCL;CustomIPTransport;vcldsnap;DCEF_DX10;bindcomp;appanalytics;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+        <DCC_RemoteDebug>true</DCC_RemoteDebug>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <DCC_RemoteDebug>false</DCC_RemoteDebug>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="Main.pas">
+            <Form>MainForm</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType>Application</Borland.ProjectType>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">QuickConfigDemo.dpr</Source>
+                </Source>
+            </Delphi.Personality>
+            <Deployment Version="3">
+                <DeployFile LocalName="Win64\Debug\QuickConfigDemo.rsm" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win64">
+                        <RemoteName>QuickConfigDemo.rsm</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win32\Debug\QuickConfigDemo.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>QuickConfigDemo.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win64\Debug\QuickConfigDemo.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win64">
+                        <RemoteName>QuickConfigDemo.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidClassesDexFile">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1024">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1536">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2048">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch768">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch320">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640x1136">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceResourceRules">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSResource">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXDebug">
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXResource">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Linux64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+            </Deployment>
+            <Platforms>
+                <Platform value="Win32">True</Platform>
+                <Platform value="Win64">True</Platform>
+            </Platforms>
+            <ModelSupport>False</ModelSupport>
+        </BorlandProject>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
+    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
+    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
+</Project>

BIN
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfigDemo.res


+ 217 - 0
samples/delphi/QuickConfig/ConfigToFileAndRegistry_deprecated/Win64/Debug/Config.json

@@ -0,0 +1,217 @@
+{
+    "Sizes": [
+        23,
+        11,
+        554,
+        12,
+        34,
+        29,
+        77,
+        30,
+        48,
+        59,
+        773,
+        221,
+        98,
+        3,
+        22,
+        983,
+        122,
+        231,
+        433,
+        12,
+        31,
+        987
+    ],
+    "LastFilename": "library.txt",
+    "WindowPos": {
+        "PosX": 480,
+        "PosY": 0
+    },
+    "History": [
+        {
+            "Id": 0,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 1,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 2,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 3,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 4,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 5,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 6,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 7,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 8,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 9,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 10,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 11,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 12,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 13,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 14,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 15,
+            "Priority": "msLow",
+            "Redundant": true
+        }
+    ],
+    "Complex": {
+        "Id": 19,
+        "Priority": "msHigh",
+        "Redundant": false
+    },
+    "ModifyDate": "2019-01-16T13:20:56.205Z",
+    "Title": "a fresh title",
+    "SessionName": "First Session",
+    "WorkList": {
+        "List": [
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            }
+        ]
+    }
+}

+ 52 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/AndroidManifest.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- BEGIN_INCLUDE(manifest) -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.embarcadero.ConfigToFile"
+        android:versionCode="1"
+        android:versionName="1.0.0"
+        android:installLocation="auto">
+
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="26" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.CAMERA" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
+    <application android:persistent="False" 
+        android:restoreAnyVersion="False" 
+        android:label="ConfigToFile" 
+        android:debuggable="True" 
+        android:largeHeap="False"
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme"
+        android:hardwareAccelerated="true"
+        android:resizeableActivity="false">
+
+        
+        
+        
+        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
+             This will take care of integrating with our NDK code. -->
+        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
+                android:label="ConfigToFile"
+                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
+                android:launchMode="singleTask">
+            <!-- Tell NativeActivity the name of our .so -->
+            <meta-data android:name="android.app.lib_name"
+                android:value="ConfigToFile" />
+            <intent-filter>  
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter> 
+        </activity>
+        
+        <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />
+
+    </application>
+</manifest>
+<!-- END_INCLUDE(manifest) -->

+ 52 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/AndroidManifest.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- BEGIN_INCLUDE(manifest) -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.embarcadero.ConfigToFile"
+        android:versionCode="1"
+        android:versionName="1.0.0"
+        android:installLocation="auto">
+
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="26" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.CAMERA" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
+    <application android:persistent="False" 
+        android:restoreAnyVersion="False" 
+        android:label="ConfigToFile" 
+        android:debuggable="True" 
+        android:largeHeap="False"
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme"
+        android:hardwareAccelerated="true"
+        android:resizeableActivity="false">
+
+        
+        
+        
+        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
+             This will take care of integrating with our NDK code. -->
+        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
+                android:label="ConfigToFile"
+                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
+                android:launchMode="singleTask">
+            <!-- Tell NativeActivity the name of our .so -->
+            <meta-data android:name="android.app.lib_name"
+                android:value="ConfigToFile" />
+            <intent-filter>  
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter> 
+        </activity>
+        
+        <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />
+
+    </application>
+</manifest>
+<!-- END_INCLUDE(manifest) -->

BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/classes/classes.dex


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/library/lib/armeabi-v7a/gdbserver


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-hdpi/ic_launcher.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-large/splash_image.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-ldpi/ic_launcher.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-mdpi/ic_launcher.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-normal/splash_image.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-small/splash_image.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xhdpi/ic_launcher.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xlarge/splash_image.png


BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable-xxhdpi/ic_launcher.png


+ 9 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/drawable/splash_image_def.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bitmap
+xmlns:android="http://schemas.android.com/apk/res/android"
+android:src="@drawable/splash_image"
+android:antialias="true"
+android:dither="true"
+android:filter="true"
+android:gravity="center"
+android:tileMode="disabled"/>

+ 6 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/values-v21/styles.xml

@@ -0,0 +1,6 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="AppTheme" parent="@android:style/Theme.Material.Light.NoActionBar">
+        <item name="android:windowBackground">@drawable/splash_image_def</item>
+        <item name="android:windowClipToOutline">false</item>
+    </style>
+</resources>

+ 6 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/ConfigToFile/res/values/styles.xml

@@ -0,0 +1,6 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="AppTheme" parent="@android:style/Theme.NoTitleBar">
+        <item name="android:windowBackground">@drawable/splash_image_def</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+</resources>

BIN
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/classes.dex


+ 9 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/splash_image_def.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bitmap
+xmlns:android="http://schemas.android.com/apk/res/android"
+android:src="@drawable/splash_image"
+android:antialias="true"
+android:dither="true"
+android:filter="true"
+android:gravity="center"
+android:tileMode="disabled"/>

+ 6 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/styles-v21.xml

@@ -0,0 +1,6 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="AppTheme" parent="@android:style/Theme.Material.Light.NoActionBar">
+        <item name="android:windowBackground">@drawable/splash_image_def</item>
+        <item name="android:windowClipToOutline">false</item>
+    </style>
+</resources>

+ 6 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Android/Debug/styles.xml

@@ -0,0 +1,6 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="AppTheme" parent="@android:style/Theme.NoTitleBar">
+        <item name="android:windowBackground">@drawable/splash_image_def</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+</resources>

+ 43 - 0
samples/firemonkey/QuickConfig/ConfigToFile/AndroidManifest.template.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- BEGIN_INCLUDE(manifest) -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="%package%"
+        android:versionCode="%versionCode%"
+        android:versionName="%versionName%"
+        android:installLocation="%installLocation%">
+
+    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
+    <%uses-permission%>
+    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
+    <application android:persistent="%persistent%" 
+        android:restoreAnyVersion="%restoreAnyVersion%" 
+        android:label="%label%" 
+        android:debuggable="%debuggable%" 
+        android:largeHeap="%largeHeap%"
+        android:icon="%icon%"
+        android:theme="%theme%"
+        android:hardwareAccelerated="%hardwareAccelerated%"
+        android:resizeableActivity="false">
+
+        <%provider%>
+        <%application-meta-data%>
+        <%services%>
+        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
+             This will take care of integrating with our NDK code. -->
+        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
+                android:label="%activityLabel%"
+                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
+                android:launchMode="singleTask">
+            <!-- Tell NativeActivity the name of our .so -->
+            <meta-data android:name="android.app.lib_name"
+                android:value="%libNameValue%" />
+            <intent-filter>  
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter> 
+        </activity>
+        <%activity%>
+        <%receivers%>
+    </application>
+</manifest>
+<!-- END_INCLUDE(manifest) -->

+ 232 - 0
samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.deployproj

@@ -0,0 +1,232 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <Import Condition="Exists('$(BDS)\bin\CodeGear.Deployment.targets')" Project="$(BDS)\bin\CodeGear.Deployment.targets"/>
+    <ProjectExtensions>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <PropertyGroup>
+        <DeviceId Condition="'$(Platform)'=='Android'">emulator-5554</DeviceId>
+        <DeviceId Condition="'$(Platform)'=='iOSDevice32'"/>
+        <DeviceId Condition="'$(Platform)'=='iOSDevice64'"/>
+        <DeviceId Condition="'$(Platform)'=='iOSSimulator'">iPhone5</DeviceId>
+    </PropertyGroup>
+    <ItemGroup Condition="'$(Platform)'=='iOSDevice64'"/>
+    <ItemGroup Condition="'$(Platform)'=='Win64'"/>
+    <ItemGroup Condition="'$(Platform)'=='iOSDevice32'"/>
+    <ItemGroup Condition="'$(Platform)'=='Win32'">
+        <DeployFile Include="Win32\Debug\ConfigToFile.exe" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\</RemoteDir>
+            <RemoteName>ConfigToFile.exe</RemoteName>
+            <DeployClass>ProjectOutput</DeployClass>
+            <Operation>0</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+            <Required>True</Required>
+        </DeployFile>
+    </ItemGroup>
+    <ItemGroup Condition="'$(Platform)'=='OSX32'">
+        <DeployFile Include="$(BDS)\Redist\osx32\libcgsqlite3.dylib">
+            <RemoteDir>ConfigToFile.app\Contents\MacOS\</RemoteDir>
+            <RemoteName>libcgsqlite3.dylib</RemoteName>
+            <DeployClass>DependencyModule</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib">
+            <RemoteDir>ConfigToFile.app\Contents\MacOS\</RemoteDir>
+            <RemoteName>libcgunwind.1.0.dylib</RemoteName>
+            <DeployClass>DependencyModule</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+    </ItemGroup>
+    <ItemGroup Condition="'$(Platform)'=='Android'">
+        <DeployFile Include="Android\Debug\classes.dex" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\classes\</RemoteDir>
+            <RemoteName>classes.dex</RemoteName>
+            <DeployClass>AndroidClassesDexFile</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-ldpi\</RemoteDir>
+            <RemoteName>ic_launcher.png</RemoteName>
+            <DeployClass>Android_LauncherIcon36</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Android\Debug\AndroidManifest.xml" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\</RemoteDir>
+            <RemoteName>AndroidManifest.xml</RemoteName>
+            <DeployClass>ProjectAndroidManifest</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\lib\android\debug\armeabi\libnative-activity.so" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\library\lib\armeabi\</RemoteDir>
+            <RemoteName>libConfigToFile.so</RemoteName>
+            <DeployClass>AndroidLibnativeArmeabiFile</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-hdpi\</RemoteDir>
+            <RemoteName>ic_launcher.png</RemoteName>
+            <DeployClass>Android_LauncherIcon72</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-xxhdpi\</RemoteDir>
+            <RemoteName>ic_launcher.png</RemoteName>
+            <DeployClass>Android_LauncherIcon144</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-small\</RemoteDir>
+            <RemoteName>splash_image.png</RemoteName>
+            <DeployClass>Android_SplashImage426</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-normal\</RemoteDir>
+            <RemoteName>splash_image.png</RemoteName>
+            <DeployClass>Android_SplashImage470</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-large\</RemoteDir>
+            <RemoteName>splash_image.png</RemoteName>
+            <DeployClass>Android_SplashImage640</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-xhdpi\</RemoteDir>
+            <RemoteName>ic_launcher.png</RemoteName>
+            <DeployClass>Android_LauncherIcon96</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-xlarge\</RemoteDir>
+            <RemoteName>splash_image.png</RemoteName>
+            <DeployClass>Android_SplashImage960</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Android\Debug\libConfigToFile.so" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\library\lib\armeabi-v7a\</RemoteDir>
+            <RemoteName>libConfigToFile.so</RemoteName>
+            <DeployClass>ProjectOutput</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+            <Required>True</Required>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable-mdpi\</RemoteDir>
+            <RemoteName>ic_launcher.png</RemoteName>
+            <DeployClass>Android_LauncherIcon48</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\lib\android\debug\mips\libnative-activity.so" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\library\lib\mips\</RemoteDir>
+            <RemoteName>libConfigToFile.so</RemoteName>
+            <DeployClass>AndroidLibnativeMipsFile</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(NDKBasePath)\prebuilt\android-arm\gdbserver\gdbserver" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\library\lib\armeabi-v7a\</RemoteDir>
+            <RemoteName>gdbserver</RemoteName>
+            <DeployClass>AndroidGDBServer</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Android\Debug\styles-v21.xml" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\values-v21\</RemoteDir>
+            <RemoteName>styles.xml</RemoteName>
+            <DeployClass>AndroidSplashStylesV21</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Android\Debug\splash_image_def.xml" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\drawable\</RemoteDir>
+            <RemoteName>splash_image_def.xml</RemoteName>
+            <DeployClass>AndroidSplashImageDef</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Android\Debug\styles.xml" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>ConfigToFile\res\values\</RemoteDir>
+            <RemoteName>styles.xml</RemoteName>
+            <DeployClass>AndroidSplashStyles</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+    </ItemGroup>
+    <ItemGroup Condition="'$(Platform)'=='iOSSimulator'">
+        <DeployFile Include="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib">
+            <RemoteDir>ConfigToFile.app\</RemoteDir>
+            <RemoteName>libcgunwind.1.0.dylib</RemoteName>
+            <DeployClass>DependencyModule</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\Redist\iossimulator\libpcre.dylib">
+            <RemoteDir>ConfigToFile.app\</RemoteDir>
+            <RemoteName>libpcre.dylib</RemoteName>
+            <DeployClass>DependencyModule</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+    </ItemGroup>
+</Project>

+ 14 - 0
samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.dpr

@@ -0,0 +1,14 @@
+program ConfigToFile;
+
+uses
+  System.StartUpCopy,
+  FMX.Forms,
+  Main in 'Main.pas' {MainForm};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TMainForm, MainForm);
+  Application.Run;
+end.

+ 960 - 0
samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.dproj

@@ -0,0 +1,960 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{D93EB58E-5F98-4C8B-9E16-A2DEF8DE9BF6}</ProjectGuid>
+        <ProjectVersion>18.5</ProjectVersion>
+        <FrameworkType>FMX</FrameworkType>
+        <MainSource>ConfigToFile.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Platform Condition="'$(Platform)'==''">Android</Platform>
+        <TargetedPlatforms>1119</TargetedPlatforms>
+        <AppType>Application</AppType>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
+        <Base_Android>true</Base_Android>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Base)'=='true') or '$(Base_iOSDevice32)'!=''">
+        <Base_iOSDevice32>true</Base_iOSDevice32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''">
+        <Base_iOSDevice64>true</Base_iOSDevice64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Base)'=='true') or '$(Base_iOSSimulator)'!=''">
+        <Base_iOSSimulator>true</Base_iOSSimulator>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''">
+        <Base_OSX32>true</Base_OSX32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
+        <Base_Win32>true</Base_Win32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+        <Cfg_1>true</Cfg_1>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+        <Cfg_2>true</Cfg_2>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
+        <Cfg_2_Win64>true</Cfg_2_Win64>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base)'!=''">
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <DCC_F>false</DCC_F>
+        <DCC_K>false</DCC_K>
+        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
+        <AUP_ACCESS_COARSE_LOCATION>true</AUP_ACCESS_COARSE_LOCATION>
+        <AUP_ACCESS_FINE_LOCATION>true</AUP_ACCESS_FINE_LOCATION>
+        <AUP_CALL_PHONE>true</AUP_CALL_PHONE>
+        <AUP_CAMERA>true</AUP_CAMERA>
+        <AUP_INTERNET>true</AUP_INTERNET>
+        <AUP_READ_EXTERNAL_STORAGE>true</AUP_READ_EXTERNAL_STORAGE>
+        <AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>
+        <AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
+        <SanitizedProjectName>ConfigToFile</SanitizedProjectName>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Android)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FlatButtonSet;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;CoolTrayIcon_D210_XE7;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
+        <VerInfo_Keys>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=</VerInfo_Keys>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
+        <Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
+        <Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
+        <Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
+        <Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
+        <Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
+        <Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
+        <Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
+        <Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
+        <EnabledSysJars>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-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_iOSDevice32)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri</VerInfo_Keys>
+        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>
+        <iPhone_AppIcon57>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png</iPhone_AppIcon57>
+        <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
+        <iPhone_AppIcon87>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png</iPhone_AppIcon87>
+        <iPhone_AppIcon114>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png</iPhone_AppIcon114>
+        <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
+        <iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
+        <iPhone_Launch320>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png</iPhone_Launch320>
+        <iPhone_Launch640>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png</iPhone_Launch640>
+        <iPhone_Launch640x1136>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png</iPhone_Launch640x1136>
+        <iPhone_Launch750>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png</iPhone_Launch750>
+        <iPhone_Launch1242>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png</iPhone_Launch1242>
+        <iPhone_Launch2208>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png</iPhone_Launch2208>
+        <iPhone_Launch1125>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png</iPhone_Launch1125>
+        <iPhone_Launch2436>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png</iPhone_Launch2436>
+        <iPhone_Spotlight29>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png</iPhone_Spotlight29>
+        <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
+        <iPhone_Spotlight58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png</iPhone_Spotlight58>
+        <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
+        <iPad_AppIcon72>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png</iPad_AppIcon72>
+        <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
+        <iPad_AppIcon144>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png</iPad_AppIcon144>
+        <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
+        <iPad_Launch768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png</iPad_Launch768>
+        <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
+        <iPad_Launch1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png</iPad_Launch1024>
+        <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
+        <iPad_Launch1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png</iPad_Launch1536>
+        <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
+        <iPad_Launch2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png</iPad_Launch2048>
+        <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
+        <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
+        <iPad_SpotLight50>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png</iPad_SpotLight50>
+        <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
+        <iPad_SpotLight100>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png</iPad_SpotLight100>
+        <iPad_Setting29>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png</iPad_Setting29>
+        <iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_iOSDevice64)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri</VerInfo_Keys>
+        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>
+        <iPhone_AppIcon57>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png</iPhone_AppIcon57>
+        <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
+        <iPhone_AppIcon87>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png</iPhone_AppIcon87>
+        <iPhone_AppIcon114>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png</iPhone_AppIcon114>
+        <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
+        <iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
+        <iPhone_Launch320>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png</iPhone_Launch320>
+        <iPhone_Launch640>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png</iPhone_Launch640>
+        <iPhone_Launch640x1136>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png</iPhone_Launch640x1136>
+        <iPhone_Launch750>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png</iPhone_Launch750>
+        <iPhone_Launch1242>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png</iPhone_Launch1242>
+        <iPhone_Launch2208>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png</iPhone_Launch2208>
+        <iPhone_Launch1125>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png</iPhone_Launch1125>
+        <iPhone_Launch2436>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png</iPhone_Launch2436>
+        <iPhone_Spotlight29>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png</iPhone_Spotlight29>
+        <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
+        <iPhone_Spotlight58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png</iPhone_Spotlight58>
+        <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
+        <iPad_AppIcon72>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png</iPad_AppIcon72>
+        <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
+        <iPad_AppIcon144>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png</iPad_AppIcon144>
+        <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
+        <iPad_Launch768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png</iPad_Launch768>
+        <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
+        <iPad_Launch1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png</iPad_Launch1024>
+        <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
+        <iPad_Launch1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png</iPad_Launch1536>
+        <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
+        <iPad_Launch2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png</iPad_Launch2048>
+        <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
+        <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
+        <iPad_SpotLight50>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png</iPad_SpotLight50>
+        <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
+        <iPad_SpotLight100>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png</iPad_SpotLight100>
+        <iPad_Setting29>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png</iPad_Setting29>
+        <iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_iOSSimulator)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;ibmonitor;FMXTee;soaprtl;DbxCommonDriver;ibxpress;xmlrtl;soapmidas;DataSnapNativeClient;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri</VerInfo_Keys>
+        <VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <iPhone_AppIcon57>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png</iPhone_AppIcon57>
+        <iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
+        <iPhone_AppIcon87>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png</iPhone_AppIcon87>
+        <iPhone_AppIcon114>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png</iPhone_AppIcon114>
+        <iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
+        <iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
+        <iPhone_Launch320>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png</iPhone_Launch320>
+        <iPhone_Launch640>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png</iPhone_Launch640>
+        <iPhone_Launch640x1136>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png</iPhone_Launch640x1136>
+        <iPhone_Launch750>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png</iPhone_Launch750>
+        <iPhone_Launch1242>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png</iPhone_Launch1242>
+        <iPhone_Launch2208>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png</iPhone_Launch2208>
+        <iPhone_Launch1125>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png</iPhone_Launch1125>
+        <iPhone_Launch2436>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png</iPhone_Launch2436>
+        <iPhone_Spotlight29>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png</iPhone_Spotlight29>
+        <iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
+        <iPhone_Spotlight58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png</iPhone_Spotlight58>
+        <iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
+        <iPad_AppIcon72>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png</iPad_AppIcon72>
+        <iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
+        <iPad_AppIcon144>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png</iPad_AppIcon144>
+        <iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
+        <iPad_Launch768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png</iPad_Launch768>
+        <iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
+        <iPad_Launch1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png</iPad_Launch1024>
+        <iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
+        <iPad_Launch1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png</iPad_Launch1536>
+        <iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
+        <iPad_Launch2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png</iPad_Launch2048>
+        <iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
+        <iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
+        <iPad_SpotLight50>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png</iPad_SpotLight50>
+        <iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
+        <iPad_SpotLight100>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png</iPad_SpotLight100>
+        <iPad_Setting29>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png</iPad_Setting29>
+        <iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_OSX32)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;FireDACIBDriver;fmx;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;ibxpress;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;ibxbindings;rtl;DbxClientDriver;FireDACDSDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <VerInfo_Keys>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;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts</VerInfo_Keys>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;UbuntuProgressPackage;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;svnui;tethering;JvGlobus;FireDACADSDriver;JvPluginSystem;tmswizdXE12;DBXMSSQLDriver;JvMM;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;JvBands;vcldb;bindcompfmx;svn;Intraweb;DBXOracleDriver;JvJans;JvNet;inetdb;JvAppFrm;FmxTeeUI;emsedge;JvDotNetCtrls;FireDACIBDriver;fmx;fmxdae;vclib;FlatButtonSet;JvWizards;FireDACDBXDriver;dbexpress;IndyCore;vclx;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;JvDB;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;JvCmp;JvHMI;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;GR32_D;JvCustom;vcl;IndyIPServer;DBXSybaseASEDriver;JvXPCtrls;PngComponents;IndySystem;FireDACDb2Driver;dsnapcon;tmsxlsdXE12;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;Jcl;JvCore;emshosting;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;tmsdXE12;FireDACTDataDriver;DBXOdbcDriver;FMXTee;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;ibxpress;Tee;JvManagedThreads;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;ibxbindings;rtl;emsserverresource;DbxClientDriver;FireDACDSDriver;DBXSybaseASADriver;GR32_R;CustomIPTransport;vcldsnap;JvTimeFramework;JvSystem;JvStdCtrls;tmsexdXE12;bindcomp;appanalytics;CoolTrayIcon_D210_XE7;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;JvDocking;dbxcds;VclSmp;KernowSoftwareFMX;adortl;FireDACODBCDriver;JvPascalInterpreter;TMSFMXPackPkgDXE12;JclVcl;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;JvControls;JvPrintPreview;Analog_XE7;JclContainers;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
+        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;tethering;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;Intraweb;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;vclib;FlatButtonSet;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;vcl;IndyIPServer;DBXSybaseASEDriver;PngComponents;IndySystem;FireDACDb2Driver;dsnapcon;tmsxlsdXE12;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;tmsdXE12;FireDACTDataDriver;DBXOdbcDriver;FMXTee;soaprtl;DbxCommonDriver;ibxpress;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;ibxbindings;rtl;emsserverresource;DbxClientDriver;FireDACDSDriver;DBXSybaseASADriver;GR32_R;CustomIPTransport;vcldsnap;tmsexdXE12;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
+        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+        <DCC_RemoteDebug>true</DCC_RemoteDebug>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <DCC_RemoteDebug>false</DCC_RemoteDebug>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="Main.pas">
+            <Form>MainForm</Form>
+            <FormType>fmx</FormType>
+        </DCCReference>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType>Application</Borland.ProjectType>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">ConfigToFile.dpr</Source>
+                </Source>
+            </Delphi.Personality>
+            <Deployment Version="3">
+                <DeployFile LocalName="Android\Debug\classes.dex" Configuration="Debug" Class="AndroidClassesDexFile">
+                    <Platform Name="Android">
+                        <RemoteName>classes.dex</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png" Configuration="Debug" Class="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteName>ic_launcher.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Android\Debug\AndroidManifest.xml" Configuration="Debug" Class="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\lib\android\debug\armeabi\libnative-activity.so" Configuration="Debug" Class="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteName>libConfigToFile.so</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png" Configuration="Debug" Class="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteName>ic_launcher.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
+                    <Platform Name="iOSSimulator">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                    <Platform Name="iOSSimulator">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
+                    <Platform Name="OSX32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png" Configuration="Debug" Class="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteName>ic_launcher.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png" Configuration="Debug" Class="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteName>splash_image.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png" Configuration="Debug" Class="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteName>splash_image.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png" Configuration="Debug" Class="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteName>splash_image.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
+                    <Platform Name="OSX32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png" Configuration="Debug" Class="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteName>ic_launcher.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png" Configuration="Debug" Class="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteName>splash_image.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Android\Debug\libConfigToFile.so" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteName>libConfigToFile.so</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
+                    <Platform Name="OSX64">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png" Configuration="Debug" Class="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteName>ic_launcher.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\lib\android\debug\mips\libnative-activity.so" Configuration="Debug" Class="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteName>libConfigToFile.so</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(NDKBasePath)\prebuilt\android-arm\gdbserver\gdbserver" Configuration="Debug" Class="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Android\Debug\styles-v21.xml" Configuration="Debug" Class="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteName>styles.xml</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win32\Debug\ConfigToFile.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>ConfigToFile.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Android\Debug\splash_image_def.xml" Configuration="Debug" Class="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Android\Debug\styles.xml" Configuration="Debug" Class="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidClassesDexFile">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1024">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch1536">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2048">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch768">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch320">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch640x1136">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceResourceRules">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSResource">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXDebug">
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXResource">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Linux64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+            </Deployment>
+            <Platforms>
+                <Platform value="Android">True</Platform>
+                <Platform value="iOSDevice32">True</Platform>
+                <Platform value="iOSDevice64">True</Platform>
+                <Platform value="iOSSimulator">True</Platform>
+                <Platform value="OSX32">True</Platform>
+                <Platform value="Win32">True</Platform>
+                <Platform value="Win64">True</Platform>
+            </Platforms>
+        </BorlandProject>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
+    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
+    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
+</Project>

BIN
samples/firemonkey/QuickConfig/ConfigToFile/ConfigToFile.res


+ 48 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Main.fmx

@@ -0,0 +1,48 @@
+object MainForm: TMainForm
+  Left = 0
+  Top = 0
+  Caption = 'MainForm'
+  ClientHeight = 480
+  ClientWidth = 366
+  FormFactor.Width = 320
+  FormFactor.Height = 480
+  FormFactor.Devices = [Desktop]
+  OnCreate = FormCreate
+  DesignerMasterStyle = 0
+  object meInfo: TMemo
+    Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
+    DataDetectorTypes = []
+    Align = Client
+    Size.Width = 366.000000000000000000
+    Size.Height = 408.000000000000000000
+    Size.PlatformDefault = False
+    TabOrder = 0
+    Viewport.Width = 362.000000000000000000
+    Viewport.Height = 404.000000000000000000
+  end
+  object Panel1: TPanel
+    Align = MostBottom
+    Position.Y = 408.000000000000000000
+    Size.Width = 366.000000000000000000
+    Size.Height = 72.000000000000000000
+    Size.PlatformDefault = False
+    TabOrder = 1
+    object btnLoadJson: TSpeedButton
+      Align = Left
+      Size.Width = 137.000000000000000000
+      Size.Height = 72.000000000000000000
+      Size.PlatformDefault = False
+      Text = 'Load from File'
+      OnClick = btnLoadJsonClick
+    end
+    object btnSaveJson: TSpeedButton
+      Align = Right
+      Position.X = 184.000000000000000000
+      Size.Width = 182.000000000000000000
+      Size.Height = 72.000000000000000000
+      Size.PlatformDefault = False
+      Text = 'Save to File'
+      OnClick = btnSaveJsonClick
+    end
+  end
+end

+ 207 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Main.pas

@@ -0,0 +1,207 @@
+unit Main;
+
+interface
+
+uses
+  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
+  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
+  System.Generics.Collections, System.IOUtils,
+  Quick.Config.Json, FMX.StdCtrls, FMX.Controls.Presentation,
+  FMX.ScrollBox, FMX.Memo;
+
+type
+
+  TMyPriority = (msLow, msMed, msHigh);
+
+  TWinPos = record
+  public
+    PosX : Integer;
+    PosY : Integer;
+  end;
+
+  TProcessType = record
+    Id : Integer;
+    Priority : TMyPriority;
+    Redundant : Boolean;
+  end;
+
+  TWorker = class
+  private
+    fName : string;
+    fActive : Boolean;
+  published
+    property Name : string read fName write fName;
+    property Active : Boolean read fActive write fActive;
+  end;
+
+  TMyConfig = class(TAppConfigJson)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArray<Integer>;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  published
+    property Sizes : TArray<Integer> read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+  end;
+
+  TMainForm = class(TForm)
+    meInfo: TMemo;
+    Panel1: TPanel;
+    btnLoadJson: TSpeedButton;
+    btnSaveJson: TSpeedButton;
+    procedure FormCreate(Sender: TObject);
+    procedure SetConfig(cConfig: TMyConfig);
+    function TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure btnLoadJsonClick(Sender: TObject);
+    procedure btnSaveJsonClick(Sender: TObject);
+  end;
+
+var
+  MainForm: TMainForm;
+  ConfigTest : TMyConfig;
+  ConfigJson : TMyConfig;
+
+implementation
+
+{$R *.fmx}
+
+
+procedure TMainForm.btnLoadJsonClick(Sender: TObject);
+begin
+  meInfo.Lines.Add('Load ConfigReg');
+  ConfigJson.Load;
+  meInfo.Lines.Add(ConfigJson.ToJSON);
+  if TestConfig(configtest,ConfigJson) then meInfo.Lines.Add('Test passed successfully!');
+end;
+
+procedure TMainForm.btnSaveJsonClick(Sender: TObject);
+begin
+  SetConfig(ConfigJson);
+  ConfigJson.Save;
+  meInfo.Lines.Add('Saved Config in Registry at ' + DateTimeToStr(ConfigJson.LastSaved));
+end;
+
+procedure TMainForm.SetConfig(cConfig : TMyConfig);
+var
+  winpos : TWinpos;
+  protype : TProcessType;
+  i : Integer;
+  worker : TWorker;
+begin
+  cConfig.LastFilename := 'library.txt';
+  cConfig.Sizes := [23,11,554,12,34,29,77,30,48,59,773,221,98,3,22,983,122,231,433,12,31,987];
+  winpos.PosX := 640;
+  winpos.PosX := 480;
+  cConfig.WindowPos := winpos;
+  protype.Priority := msHigh;
+  protype.Redundant := False;
+  cConfig.Complex := protype;
+  cConfig.Title := 'a fresh title';
+  cConfig.SessionName := 'First Session';
+  for I := 0 to 22 do
+  begin
+    worker := TWorker.Create;
+    worker.Name := 'Process ' + i.ToString;
+    worker.Active := Boolean(Random(1));
+    cConfig.WorkList.Add(worker);
+  end;
+  for i := 0 to 15 do
+  begin
+    protype.Id := i;
+    protype.Priority := msLow;
+    protype.Redundant := True;
+    cConfig.History := cConfig.History + [protype];
+  end;
+  cConfig.ModifyDate := Now();
+end;
+
+function  TMainForm.TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+var
+  i : Integer;
+begin
+  Result := False;
+  try
+    Assert(cConfig1.LastFilename = cConfig2.LastFilename);
+    for i := Low(cConfig1.Sizes) to High(cConfig1.Sizes) do
+      Assert(cConfig1.Sizes[i] = cConfig2.Sizes[i]);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.Complex.Priority = cConfig2.Complex.Priority);
+    Assert(cConfig1.Complex.Redundant  = cConfig2.Complex.Redundant);
+    Assert(cConfig1.Title = cConfig2.Title);
+    for i := 0 to cConfig1.WorkList.Count - 1 do
+    begin
+      Assert(cConfig1.WorkList[i].Name = cConfig2.WorkList[i].Name);
+      Assert(cConfig1.WorkList[i].Active = cConfig2.WorkList[i].Active);
+    end;
+    for i := 0 to High(cConfig1.History) do
+    begin
+      Assert(cConfig1.History[i].Priority = cConfig2.History[i].Priority);
+      Assert(cConfig1.History[i].Redundant = cConfig2.History[i].Redundant);
+    end;
+    Result := True;
+  except
+    ShowMessage('Configuration not has been saved previously or has a corruption problem');
+  end;
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Assigned(ConfigJson) then ConfigJson.Free;
+  if Assigned(ConfigTest) then ConfigTest.Free;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+  ConfigJson := TMyConfig.Create;
+  {$IFDEF NEXTGEN}
+  ConfigJson.Provider.Filename := TPath.GetDocumentsPath + '/config.json';
+  {$ELSE}
+  ConfigJson.Provider.Filename := '.\config.json';
+  {$ENDIF}
+  //create config test to compare later
+  ConfigTest := TMyConfig.Create;
+  SetConfig(ConfigTest);
+end;
+
+{ TMyConfig }
+
+constructor TMyConfig.Create;
+begin
+  inherited Create;
+  WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfig.DefaultValues;
+begin
+  inherited;
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfig.Destroy;
+begin
+  if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+end.

+ 217 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Win32/Debug/config.json

@@ -0,0 +1,217 @@
+{
+    "Sizes": [
+        23,
+        11,
+        554,
+        12,
+        34,
+        29,
+        77,
+        30,
+        48,
+        59,
+        773,
+        221,
+        98,
+        3,
+        22,
+        983,
+        122,
+        231,
+        433,
+        12,
+        31,
+        987
+    ],
+    "LastFilename": "library.txt",
+    "WindowPos": {
+        "PosX": 480,
+        "PosY": 9726500
+    },
+    "History": [
+        {
+            "Id": 0,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 1,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 2,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 3,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 4,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 5,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 6,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 7,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 8,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 9,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 10,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 11,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 12,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 13,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 14,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 15,
+            "Priority": "msLow",
+            "Redundant": true
+        }
+    ],
+    "Complex": {
+        "Id": 1702832,
+        "Priority": "msHigh",
+        "Redundant": false
+    },
+    "ModifyDate": "2019-01-17T14:03:28.808Z",
+    "Title": "a fresh title",
+    "SessionName": "First Session",
+    "WorkList": {
+        "List": [
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            }
+        ]
+    }
+}

+ 217 - 0
samples/firemonkey/QuickConfig/ConfigToFile/Win64/Debug/config.json

@@ -0,0 +1,217 @@
+{
+    "Sizes": [
+        23,
+        11,
+        554,
+        12,
+        34,
+        29,
+        77,
+        30,
+        48,
+        59,
+        773,
+        221,
+        98,
+        3,
+        22,
+        983,
+        122,
+        231,
+        433,
+        12,
+        31,
+        987
+    ],
+    "LastFilename": "library.txt",
+    "WindowPos": {
+        "PosX": 480,
+        "PosY": 0
+    },
+    "History": [
+        {
+            "Id": 0,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 1,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 2,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 3,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 4,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 5,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 6,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 7,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 8,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 9,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 10,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 11,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 12,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 13,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 14,
+            "Priority": "msLow",
+            "Redundant": true
+        },
+        {
+            "Id": 15,
+            "Priority": "msLow",
+            "Redundant": true
+        }
+    ],
+    "Complex": {
+        "Id": 269729584,
+        "Priority": "msHigh",
+        "Redundant": false
+    },
+    "ModifyDate": "2019-01-17T23:08:53.216Z",
+    "Title": "a fresh title",
+    "SessionName": "First Session",
+    "WorkList": {
+        "List": [
+            {
+                "Name": "Process 0",
+                "Active": false
+            },
+            {
+                "Name": "Process 1",
+                "Active": false
+            },
+            {
+                "Name": "Process 2",
+                "Active": false
+            },
+            {
+                "Name": "Process 3",
+                "Active": false
+            },
+            {
+                "Name": "Process 4",
+                "Active": false
+            },
+            {
+                "Name": "Process 5",
+                "Active": false
+            },
+            {
+                "Name": "Process 6",
+                "Active": false
+            },
+            {
+                "Name": "Process 7",
+                "Active": false
+            },
+            {
+                "Name": "Process 8",
+                "Active": false
+            },
+            {
+                "Name": "Process 9",
+                "Active": false
+            },
+            {
+                "Name": "Process 10",
+                "Active": false
+            },
+            {
+                "Name": "Process 11",
+                "Active": false
+            },
+            {
+                "Name": "Process 12",
+                "Active": false
+            },
+            {
+                "Name": "Process 13",
+                "Active": false
+            },
+            {
+                "Name": "Process 14",
+                "Active": false
+            },
+            {
+                "Name": "Process 15",
+                "Active": false
+            },
+            {
+                "Name": "Process 16",
+                "Active": false
+            },
+            {
+                "Name": "Process 17",
+                "Active": false
+            },
+            {
+                "Name": "Process 18",
+                "Active": false
+            },
+            {
+                "Name": "Process 19",
+                "Active": false
+            },
+            {
+                "Name": "Process 20",
+                "Active": false
+            },
+            {
+                "Name": "Process 21",
+                "Active": false
+            },
+            {
+                "Name": "Process 22",
+                "Active": false
+            }
+        ]
+    }
+}

+ 21 - 0
samples/fpc/QuickConfig/ConfigToFile/Config.json

@@ -0,0 +1,21 @@
+{
+     "Title" :  "hola",
+     "SessionName" :  "Session01",
+     "Sizes" :  [
+        1,
+         2,
+         3,
+         4,
+         5,
+         6,
+         7
+    ],
+     "LastFilename" :  "C:\\library.txt",
+     "History" :  [    ],
+     "Complex" :  {
+         "Id" :  1,
+         "Priority" :  "msMed",
+         "Redundant" :  true 
+    },
+     "ModifyDate" :  "2019-01-17T23:27:53.802Z " 
+}

BIN
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.ico


+ 21 - 0
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.json

@@ -0,0 +1,21 @@
+{
+     "Title" :  "hola",
+     "SessionName" :  "Session01",
+     "Sizes" :  [
+        1,
+         2,
+         3,
+         4,
+         5,
+         6,
+         7
+    ],
+     "LastFilename" :  "C:\\library.txt",
+     "History" :  [    ],
+     "Complex" :  {
+         "Id" :  1,
+         "Priority" :  "msMed",
+         "Redundant" :  true 
+    },
+     "ModifyDate" :  "2019-01-17T13:51:56.269Z " 
+}

+ 80 - 0
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.lpi

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <General>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="QuickConfig"/>
+      <Scaled Value="True"/>
+      <ResourceType Value="res"/>
+      <UseXPManifest Value="True"/>
+      <XPManifest>
+        <DpiAware Value="True"/>
+      </XPManifest>
+      <Icon Value="0"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0"/>
+    </RunParams>
+    <RequiredPackages Count="1">
+      <Item1>
+        <PackageName Value="LCL"/>
+      </Item1>
+    </RequiredPackages>
+    <Units Count="2">
+      <Unit0>
+        <Filename Value="QuickConfig.pas"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="umain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="Form1"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="uMain"/>
+      </Unit1>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <Target>
+      <Filename Value="QuickConfig"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)"/>
+      <OtherUnitFiles Value="..\..\..\.."/>
+      <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Linking>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
+    </Linking>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 20 - 0
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.lpr

@@ -0,0 +1,20 @@
+program QuickConfig;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms;
+
+{$R *.res}
+
+begin
+  RequireDerivedFormResource:=True;
+  Application.Scaled:=True;
+  Application.Initialize;
+  Application.Run;
+end.
+

+ 14 - 0
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.pas

@@ -0,0 +1,14 @@
+program QuickConfig;
+
+uses
+  Forms, Interfaces,
+  uMain in 'uMain.pas' {MainForm};
+
+{$R *.res}
+
+begin
+  Application.Scaled:=True;
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.

BIN
samples/fpc/QuickConfig/ConfigToFile/QuickConfig.res


BIN
samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/QuickConfig.or


BIN
samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/QuickConfig.res


+ 39 - 0
samples/fpc/QuickConfig/ConfigToFile/lib/i386-win32/umain.lfm

@@ -0,0 +1,39 @@
+object Form1: TForm1
+  Left = 379
+  Height = 457
+  Top = 208
+  Width = 592
+  Caption = 'Form1'
+  ClientHeight = 457
+  ClientWidth = 592
+  OnClose = FormClose
+  OnCreate = FormCreate
+  LCLVersion = '1.9.0.0'
+  object btnSaveJson: TButton
+    Left = 448
+    Height = 25
+    Top = 424
+    Width = 120
+    Caption = 'Save to Json'
+    OnClick = btnSaveJsonClick
+    TabOrder = 0
+  end
+  object btnLoadJson: TButton
+    Left = 312
+    Height = 25
+    Top = 424
+    Width = 123
+    Caption = 'Load From Json'
+    OnClick = btnLoadJsonClick
+    TabOrder = 1
+  end
+  object meInfo: TMemo
+    Left = 19
+    Height = 407
+    Top = 9
+    Width = 549
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 2
+  end
+end

+ 39 - 0
samples/fpc/QuickConfig/ConfigToFile/umain.lfm

@@ -0,0 +1,39 @@
+object Form1: TForm1
+  Left = 379
+  Height = 457
+  Top = 208
+  Width = 592
+  Caption = 'Form1'
+  ClientHeight = 457
+  ClientWidth = 592
+  OnClose = FormClose
+  OnCreate = FormCreate
+  LCLVersion = '1.9.0.0'
+  object btnSaveJson: TButton
+    Left = 448
+    Height = 25
+    Top = 424
+    Width = 120
+    Caption = 'Save to Json'
+    OnClick = btnSaveJsonClick
+    TabOrder = 0
+  end
+  object btnLoadJson: TButton
+    Left = 312
+    Height = 25
+    Top = 424
+    Width = 123
+    Caption = 'Load From Json'
+    OnClick = btnLoadJsonClick
+    TabOrder = 1
+  end
+  object meInfo: TMemo
+    Left = 19
+    Height = 407
+    Top = 9
+    Width = 549
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 2
+  end
+end

+ 220 - 0
samples/fpc/QuickConfig/ConfigToFile/umain.pas

@@ -0,0 +1,220 @@
+unit uMain;
+
+{$mode delphi}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
+  {$IFDEF FPC}
+  registry,
+  {$ENDIF}
+  Quick.Config.Json,
+  Generics.Collections;
+
+type
+
+  TMyPriority = (msLow, msMed, msHigh);
+
+  TWinPos = class
+  private
+    fPosX : Integer;
+    fPosY : Integer;
+  published
+    property PosX : Integer read fPosX write fPosX;
+    property PosY : Integer read fPosY write fPosY;
+  end;
+
+  TProcessType = class
+  private
+    fId : Integer;
+    fPriority : TMyPriority;
+    fRedundant : Boolean;
+  published
+    property Id : Integer read fId write fId;
+    property Priority : TMyPriority read fPriority write fPriority;
+    property Redundant : Boolean read fRedundant write fRedundant;
+  end;
+
+  TWorker = class
+  private
+    fName : string;
+    fActive : Boolean;
+  published
+    property Name : string read fName write fName;
+    property Active : Boolean read fActive write fActive;
+  end;
+
+  TMyConfig2 = class(TAppConfigJson)
+  private
+    fhola : Integer;
+  published
+    property hola : Integer read fhola write fhola;
+  end;
+
+  TArraySizes = array of Integer;
+
+  TMyConfig = class(TAppConfigJson)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArraySizes;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+    property Hidden : Boolean read fHidden write fHidden;
+  published
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property Sizes : TArraySizes read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    //property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    //property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  end;
+
+  { TForm1 }
+
+  TForm1 = class(TForm)
+    btnSaveJson: TButton;
+    btnLoadJson: TButton;
+    meInfo: TMemo;
+    procedure btnLoadJsonClick(Sender: TObject);
+    procedure btnSaveJsonClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+  private
+
+  public
+    procedure SetConfig(cConfig: TMyConfig);
+    function TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+
+  end;
+
+var
+  Form1: TForm1;
+  ConfigJson : TMyConfig;
+  ConfigTest : TMyConfig;
+
+implementation
+
+{$R *.lfm}
+
+uses
+  Quick.Json.Serializer;
+
+{ TForm1 }
+
+procedure TForm1.btnSaveJsonClick(Sender: TObject);
+begin
+  SetConfig(ConfigJson);
+  ConfigJson.Save;
+  meInfo.Lines.Add(ConfigJson.ToJson);
+  meInfo.Lines.Add('Saved Config in Json at ' + DateTimeToStr(ConfigJson.LastSaved));
+end;
+
+procedure TForm1.btnLoadJsonClick(Sender: TObject);
+begin
+  meInfo.Lines.Add('Load ConfigJson');
+  ConfigJson := TMyConfig.Create;
+  ConfigJson.Load;
+  meInfo.Lines.Add(ConfigJson.ToJSON);
+  if TestConfig(ConfigTest,ConfigJson) then meInfo.Lines.Add('Test passed successfully!');
+end;
+
+function  TForm1.TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+var
+  i : Integer;
+begin
+  try
+    Assert(cConfig1.LastFilename = cConfig2.LastFilename);
+    for i := Low(cConfig1.Sizes) to High(cConfig1.Sizes) do
+      Assert(cConfig1.Sizes[i] = cConfig2.Sizes[i]);
+    //Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    //Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.Complex.Priority = cConfig2.Complex.Priority);
+    Assert(cConfig1.Complex.Redundant  = cConfig2.Complex.Redundant);
+    Assert(cConfig1.Title = cConfig2.Title);
+    //for i := 0 to cConfig1.WorkList.Count - 1 do
+    //begin
+    //  Assert(cConfig1.WorkList[i].Name = cConfig2.WorkList[i].Name);
+    //  Assert(cConfig1.WorkList[i].Active = cConfig2.WorkList[i].Active);
+    //end;
+    for i := 0 to High(cConfig1.History) do
+    begin
+      Assert(cConfig1.History[i].Priority = cConfig2.History[i].Priority);
+      Assert(cConfig1.History[i].Redundant = cConfig2.History[i].Redundant);
+    end;
+    Result := True;
+  except
+    ShowMessage('Configuration not has been saved previously or has a corruption problem');
+  end;
+end;
+
+
+procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  if Assigned(ConfigTest) then ConfigTest.Free;
+  if Assigned(ConfigJson) then ConfigJson.Free;
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+  ConfigTest := TMyConfig.Create;
+  SetConfig(ConfigTest);
+  ConfigJson := TMyConfig.Create('.\Config.json');
+  //ConfigJson.Provider.CreateIfNotExists := True;
+end;
+
+procedure TForm1.SetConfig(cConfig: TMyConfig);
+var
+  processtype : TProcessType;
+begin
+  cConfig.Title := 'hola';
+  cConfig.SessionName := 'Session01';
+  cConfig.LastFileName := 'C:\library.txt';
+  cConfig.Sizes := [1,2,3,4,5,6,7];
+  cConfig.Complex := TProcessType.Create;
+  cConfig.Complex.Id := 1;
+  cConfig.Complex.Redundant := True;
+  cConfig.Complex.Priority := TMyPriority.msMed;
+  //processtype := TProcessType.Create;
+  //processtype.Id := 1;
+  //processtype.Priority := msLow;
+  //processtype.Redundant := True;
+  //cConfig.History := [processtype];
+  cConfig.ModifyDate := Now();
+end;
+
+{ TMyConfig }
+
+constructor TMyConfig.Create;
+begin
+  inherited;
+  //WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfig.DefaultValues;
+begin
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfig.Destroy;
+begin
+  //if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+end.
+

+ 21 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/Config.json

@@ -0,0 +1,21 @@
+{
+     "Title" :  "hola",
+     "SessionName" :  "Session01",
+     "Sizes" :  [
+        1,
+         2,
+         3,
+         4,
+         5,
+         6,
+         7
+    ],
+     "LastFilename" :  "C:\\library.txt",
+     "History" :  [    ],
+     "Complex" :  {
+         "Id" :  1,
+         "Priority" :  "msMed",
+         "Redundant" :  true 
+    },
+     "ModifyDate" :  "2018-12-11T22:25:29.250Z " 
+}

BIN
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.ico


+ 86 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.lpi

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <General>
+      <SessionStorage Value="InProjectDir"/>
+      <MainUnit Value="0"/>
+      <Title Value="QuickConfig"/>
+      <Scaled Value="True"/>
+      <ResourceType Value="res"/>
+      <UseXPManifest Value="True"/>
+      <XPManifest>
+        <DpiAware Value="True"/>
+      </XPManifest>
+      <Icon Value="0"/>
+    </General>
+    <BuildModes Count="1">
+      <Item1 Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes Count="0"/>
+    </RunParams>
+    <RequiredPackages Count="2">
+      <Item1>
+        <PackageName Value="QuickLib"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="LCL"/>
+      </Item2>
+    </RequiredPackages>
+    <Units Count="3">
+      <Unit0>
+        <Filename Value="QuickConfig.pas"/>
+        <IsPartOfProject Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="Main.pas"/>
+        <IsPartOfProject Value="True"/>
+        <HasResources Value="True"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="umain.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="Form1"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+        <UnitName Value="uMain"/>
+      </Unit2>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <PathDelim Value="\"/>
+    <Target>
+      <Filename Value="QuickConfig"/>
+    </Target>
+    <SearchPaths>
+      <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Linking>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
+    </Linking>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 20 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.lpr

@@ -0,0 +1,20 @@
+program QuickConfig;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Interfaces, // this includes the LCL widgetset
+  Forms;
+
+{$R *.res}
+
+begin
+  RequireDerivedFormResource:=True;
+  Application.Scaled:=True;
+  Application.Initialize;
+  Application.Run;
+end.
+

+ 13 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.pas

@@ -0,0 +1,13 @@
+program QuickConfig;
+
+uses
+  Forms, Interfaces,
+  uMain in 'uMain.pas' {MainForm};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.

BIN
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/QuickConfig.res


BIN
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/QuickConfig.or


BIN
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/QuickConfig.res


+ 57 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/lib/i386-win32/umain.lfm

@@ -0,0 +1,57 @@
+object Form1: TForm1
+  Left = 379
+  Height = 457
+  Top = 230
+  Width = 592
+  Caption = 'Form1'
+  ClientHeight = 457
+  ClientWidth = 592
+  OnClose = FormClose
+  OnCreate = FormCreate
+  LCLVersion = '1.9.0.0'
+  object btnSaveJson: TButton
+    Left = 448
+    Height = 25
+    Top = 384
+    Width = 120
+    Caption = 'Save to Json'
+    OnClick = btnSaveJsonClick
+    TabOrder = 0
+  end
+  object btnLoadJson: TButton
+    Left = 312
+    Height = 25
+    Top = 384
+    Width = 123
+    Caption = 'Load From Json'
+    OnClick = btnLoadJsonClick
+    TabOrder = 1
+  end
+  object meInfo: TMemo
+    Left = 19
+    Height = 363
+    Top = 9
+    Width = 549
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 2
+  end
+  object btnSaveRegistry: TButton
+    Left = 448
+    Height = 25
+    Top = 416
+    Width = 120
+    Caption = 'Save to Registry'
+    OnClick = btnSaveRegistryClick
+    TabOrder = 3
+  end
+  object btnLoadRegistry: TButton
+    Left = 312
+    Height = 25
+    Top = 416
+    Width = 123
+    Caption = 'Load From Registry'
+    OnClick = btnLoadRegistryClick
+    TabOrder = 4
+  end
+end

+ 57 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/umain.lfm

@@ -0,0 +1,57 @@
+object Form1: TForm1
+  Left = 379
+  Height = 457
+  Top = 230
+  Width = 592
+  Caption = 'Form1'
+  ClientHeight = 457
+  ClientWidth = 592
+  OnClose = FormClose
+  OnCreate = FormCreate
+  LCLVersion = '1.9.0.0'
+  object btnSaveJson: TButton
+    Left = 448
+    Height = 25
+    Top = 384
+    Width = 120
+    Caption = 'Save to Json'
+    OnClick = btnSaveJsonClick
+    TabOrder = 0
+  end
+  object btnLoadJson: TButton
+    Left = 312
+    Height = 25
+    Top = 384
+    Width = 123
+    Caption = 'Load From Json'
+    OnClick = btnLoadJsonClick
+    TabOrder = 1
+  end
+  object meInfo: TMemo
+    Left = 19
+    Height = 363
+    Top = 9
+    Width = 549
+    ReadOnly = True
+    ScrollBars = ssAutoBoth
+    TabOrder = 2
+  end
+  object btnSaveRegistry: TButton
+    Left = 448
+    Height = 25
+    Top = 416
+    Width = 120
+    Caption = 'Save to Registry'
+    OnClick = btnSaveRegistryClick
+    TabOrder = 3
+  end
+  object btnLoadRegistry: TButton
+    Left = 312
+    Height = 25
+    Top = 416
+    Width = 123
+    Caption = 'Load From Registry'
+    OnClick = btnLoadRegistryClick
+    TabOrder = 4
+  end
+end

+ 254 - 0
samples/fpc/QuickConfig/ConfigToFileAndRegistry_deprecated/umain.pas

@@ -0,0 +1,254 @@
+unit uMain;
+
+{$mode delphi}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
+  Quick.Config,
+  Quick.Config.Provider.Registry,
+  Generics.Collections,
+  {$IFDEF FPC}
+  registry,
+  {$ENDIF}
+  Quick.Config.Provider.Json;
+
+type
+
+  TMyPriority = (msLow, msMed, msHigh);
+
+  TWinPos = class
+  private
+    fPosX : Integer;
+    fPosY : Integer;
+  published
+    property PosX : Integer read fPosX write fPosX;
+    property PosY : Integer read fPosY write fPosY;
+  end;
+
+  TProcessType = class
+  private
+    fId : Integer;
+    fPriority : TMyPriority;
+    fRedundant : Boolean;
+  published
+    property Id : Integer read fId write fId;
+    property Priority : TMyPriority read fPriority write fPriority;
+    property Redundant : Boolean read fRedundant write fRedundant;
+  end;
+
+  TWorker = class
+  private
+    fName : string;
+    fActive : Boolean;
+  published
+    property Name : string read fName write fName;
+    property Active : Boolean read fActive write fActive;
+  end;
+
+  TMyConfig2 = class(TAppConfig)
+  private
+    fhola : Integer;
+  published
+    property hola : Integer read fhola write fhola;
+  end;
+
+  TArraySizes = array of Integer;
+
+  TMyConfig = class(TAppConfig)
+  private
+    fTitle : string;
+    fHidden : Boolean;
+    fSessionName: string;
+    fSizes : TArraySizes;
+    fLastFilename : string;
+    fWindowPos : TWinPos;
+    fHistory : TArray<TProcessType>;
+    fComplex : TProcessType;
+    fModifyDate : TDateTime;
+    fWorkList : TObjectList<TWorker>;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    procedure DefaultValues; override;
+    property Hidden : Boolean read fHidden write fHidden;
+  published
+    property Title : string read fTitle write fTitle;
+    property SessionName : string read fSessionName write fSessionName;
+    property Sizes : TArraySizes read fSizes write fSizes;
+    property LastFilename : string read fLastFilename write fLastFilename;
+    //property WindowPos : TWinPos read fWindowPos write fWindowPos;
+    property History : TArray<TProcessType> read fHistory write fHistory;
+    property Complex : TProcessType read fComplex write fComplex;
+    property ModifyDate : TDateTime read fModifyDate write fModifyDate;
+    //property WorkList : TObjectList<TWorker> read fWorkList write fWorkList;
+  end;
+
+  { TForm1 }
+
+  TForm1 = class(TForm)
+    btnLoadRegistry: TButton;
+    btnSaveJson: TButton;
+    btnLoadJson: TButton;
+    btnSaveRegistry: TButton;
+    meInfo: TMemo;
+    procedure btnLoadJsonClick(Sender: TObject);
+    procedure btnLoadRegistryClick(Sender: TObject);
+    procedure btnSaveJsonClick(Sender: TObject);
+    procedure btnSaveRegistryClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+  private
+
+  public
+    procedure SetConfig(cConfig: TMyConfig);
+    function TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+
+  end;
+
+var
+  Form1: TForm1;
+  ConfigJson : TMyConfig;
+  ConfigReg : TMyConfig;
+  ConfigTest : TMyConfig;
+  AppConfigJson : TAppConfigJsonProvider<TMyConfig>;
+  AppConfigReg : TAppConfigRegistryProvider<TMyConfig>;
+
+implementation
+
+{$R *.lfm}
+
+uses
+  Quick.Json.Serializer;
+
+{ TForm1 }
+
+procedure TForm1.btnSaveJsonClick(Sender: TObject);
+begin
+  SetConfig(ConfigJson);
+  AppConfigJson.Save(ConfigJson);
+  meInfo.Lines.Add(ConfigJson.ToJson);
+  meInfo.Lines.Add('Saved Config in Json at ' + DateTimeToStr(ConfigJson.LastSaved));
+end;
+
+procedure TForm1.btnSaveRegistryClick(Sender: TObject);
+begin
+  SetConfig(ConfigJson);
+  AppConfigReg.Save(ConfigJson);
+  meInfo.Lines.Add(ConfigJson.ToJson);
+  meInfo.Lines.Add('Saved Config in Registry at ' + DateTimeToStr(ConfigJson.LastSaved));
+end;
+
+procedure TForm1.btnLoadJsonClick(Sender: TObject);
+begin
+  meInfo.Lines.Add('Load ConfigJson');
+  ConfigJson := TMyConfig.Create;
+  AppConfigJson.Load(ConfigJson);
+  meInfo.Lines.Add(ConfigJson.ToJSON);
+  if TestConfig(ConfigTest,ConfigJson) then meInfo.Lines.Add('Test passed successfully!');
+end;
+
+procedure TForm1.btnLoadRegistryClick(Sender: TObject);
+begin
+  meInfo.Lines.Add('Load ConfigRegistry');
+  ConfigJson := TMyConfig.Create;
+  AppConfigReg.Load(ConfigJson);
+  meInfo.Lines.Add(ConfigJson.ToJSON);
+  if TestConfig(ConfigTest,ConfigJson) then meInfo.Lines.Add('Test passed successfully!');
+end;
+
+function  TForm1.TestConfig(cConfig1, cConfig2 : TMyConfig) : Boolean;
+var
+  i : Integer;
+begin
+  try
+    Assert(cConfig1.LastFilename = cConfig2.LastFilename);
+    for i := Low(cConfig1.Sizes) to High(cConfig1.Sizes) do
+      Assert(cConfig1.Sizes[i] = cConfig2.Sizes[i]);
+    //Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    //Assert(cConfig1.WindowPos.PosX = cConfig2.WindowPos.PosX);
+    Assert(cConfig1.Complex.Priority = cConfig2.Complex.Priority);
+    Assert(cConfig1.Complex.Redundant  = cConfig2.Complex.Redundant);
+    Assert(cConfig1.Title = cConfig2.Title);
+    //for i := 0 to cConfig1.WorkList.Count - 1 do
+    //begin
+    //  Assert(cConfig1.WorkList[i].Name = cConfig2.WorkList[i].Name);
+    //  Assert(cConfig1.WorkList[i].Active = cConfig2.WorkList[i].Active);
+    //end;
+    for i := 0 to High(cConfig1.History) do
+    begin
+      Assert(cConfig1.History[i].Priority = cConfig2.History[i].Priority);
+      Assert(cConfig1.History[i].Redundant = cConfig2.History[i].Redundant);
+    end;
+    Result := True;
+  except
+    ShowMessage('Configuration not has been saved previously or has a corruption problem');
+  end;
+end;
+
+
+procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+  if Assigned(AppConfigJson) then AppConfigJson.Free;
+  if Assigned(AppConfigReg) then AppConfigReg.Free;
+  if Assigned(ConfigTest) then ConfigTest.Free;
+  if Assigned(ConfigReg) then ConfigReg.Free;
+  if Assigned(ConfigJson) then ConfigJson.Free;
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+  ConfigTest := TMyConfig.Create;
+  SetConfig(ConfigTest);
+  AppConfigJson := TAppConfigJsonProvider<TMyConfig>.Create(ConfigJson);
+  AppConfigJson.CreateIfNotExists := True;
+  AppConfigJson.Filename := '.\Config.json';
+  ConfigJson := TMyConfig.Create;
+  AppConfigReg := TAppConfigRegistryProvider<TMyConfig>.Create(ConfigReg);
+  AppConfigReg.HRoot := HKEY_CURRENT_USER;
+  AppConfigReg.MainKey := '_AppConfig';
+end;
+
+procedure TForm1.SetConfig(cConfig: TMyConfig);
+var
+  processtype : TProcessType;
+begin
+  cConfig.Title := 'hola';
+  cConfig.SessionName := 'Session01';
+  cConfig.LastFileName := 'C:\library.txt';
+  cConfig.Sizes := [1,2,3,4,5,6,7];
+  cConfig.Complex := TProcessType.Create;
+  cConfig.Complex.Id := 1;
+  cConfig.Complex.Redundant := True;
+  cConfig.Complex.Priority := TMyPriority.msMed;
+  //processtype := TProcessType.Create;
+  //processtype.Id := 1;
+  //processtype.Priority := msLow;
+  //processtype.Redundant := True;
+  //cConfig.History := [processtype];
+  cConfig.ModifyDate := Now();
+end;
+
+{ TMyConfig }
+
+constructor TMyConfig.Create;
+begin
+  inherited;
+  //WorkList := TObjectList<TWorker>.Create(True);
+  DefaultValues;
+end;
+
+procedure TMyConfig.DefaultValues;
+begin
+  fTitle := 'Default value';
+end;
+
+destructor TMyConfig.Destroy;
+begin
+  //if Assigned(WorkList) then WorkList.Free;
+  inherited;
+end;
+
+end.
+