├── QuickORM.png ├── Quick.ORM.Engine.pas ├── Quick.ORM.Security.pas ├── Quick.ORM.App.Config.pas ├── Quick.ORM.Form.Login.pas ├── Quick.ORM.RestClient.pas ├── Quick.ORM.RestDBFull.pas ├── Quick.ORM.RestServer.pas ├── Quick.ORM.Security.GUI.pas ├── Quick.ORM.Server.Base.pas ├── Quick.ORM.UTF8Helper.pas ├── Quick.ORM.Server.Config.pas ├── Quick.ORM.RestClient.Cross.pas ├── samples ├── ORMUF8HelperTest │ ├── QuickUTF8Helper_Test.dpr │ ├── QuickUTF8Helper_Test.res │ └── QuickUTF8Helper_Test.dproj └── ORMRestServerDemo │ └── source │ ├── delphi │ ├── ORMRestClient.res │ ├── ORMRestServer.res │ ├── ORMRestClient.dpr │ ├── ORMDemo.RestMethods.pas │ ├── ORMDemo.CustomServer.pas │ ├── ClientMain.dfm │ ├── ClientMain.pas │ └── ORMRestServer.dpr │ ├── fpc │ ├── ClientHTTPSocket.res │ ├── ServerHTTPSocket.res │ ├── ClientHTTPSocket.dpr │ ├── ORMDemo.RestMethods.pas │ ├── ORMDemo.CustomServer.pas │ ├── ORMRestServer.lpi │ ├── ClientMain.dfm │ ├── ClientMain.pas │ ├── ORMRestServer.pas │ └── ORMRestServer.lps │ ├── win32 │ └── HTTPSocket │ │ ├── ClientHTTPSocket.res │ │ ├── ServerHTTPSocket.res │ │ ├── ClientHTTPSocket.dpr │ │ ├── ORMDemo.RestMethods.pas │ │ ├── ORMDemo.CustomServer.pas │ │ ├── ClientMain.dfm │ │ ├── ClientMain.pas │ │ ├── ServerHTTPSocket.dpr │ │ ├── ClientHTTPSocket.dproj │ │ └── ServerHTTPSocket.dproj │ ├── Firemonkey │ └── android │ │ ├── MobileHTTPRestClient.res │ │ ├── MobileHTTPRestClient.dpr │ │ ├── Main.pas │ │ ├── Main.fmx │ │ └── MobileHTTPRestClient.deployproj │ └── common │ ├── ORMDemo.Interf.pas │ └── ORMDemo.Model.pas ├── Delphinus.Install.json ├── quickorm.pas ├── Delphinus.Info.json ├── .gitignore ├── Quick.ORM.Form.Login.dfm ├── quickorm.lpk ├── Quick.ORM.DataBase.pas ├── QuickORM.inc ├── README.md └── Quick.ORM.RestDB.pas /QuickORM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/QuickORM.png -------------------------------------------------------------------------------- /Quick.ORM.Engine.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Engine.pas -------------------------------------------------------------------------------- /Quick.ORM.Security.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Security.pas -------------------------------------------------------------------------------- /Quick.ORM.App.Config.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.App.Config.pas -------------------------------------------------------------------------------- /Quick.ORM.Form.Login.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Form.Login.pas -------------------------------------------------------------------------------- /Quick.ORM.RestClient.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.RestClient.pas -------------------------------------------------------------------------------- /Quick.ORM.RestDBFull.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.RestDBFull.pas -------------------------------------------------------------------------------- /Quick.ORM.RestServer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.RestServer.pas -------------------------------------------------------------------------------- /Quick.ORM.Security.GUI.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Security.GUI.pas -------------------------------------------------------------------------------- /Quick.ORM.Server.Base.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Server.Base.pas -------------------------------------------------------------------------------- /Quick.ORM.UTF8Helper.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.UTF8Helper.pas -------------------------------------------------------------------------------- /Quick.ORM.Server.Config.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.Server.Config.pas -------------------------------------------------------------------------------- /Quick.ORM.RestClient.Cross.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/Quick.ORM.RestClient.Cross.pas -------------------------------------------------------------------------------- /samples/ORMUF8HelperTest/QuickUTF8Helper_Test.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMUF8HelperTest/QuickUTF8Helper_Test.dpr -------------------------------------------------------------------------------- /samples/ORMUF8HelperTest/QuickUTF8Helper_Test.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMUF8HelperTest/QuickUTF8Helper_Test.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMRestClient.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/delphi/ORMRestClient.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMRestServer.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/delphi/ORMRestServer.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ClientHTTPSocket.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/fpc/ClientHTTPSocket.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ServerHTTPSocket.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/fpc/ServerHTTPSocket.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientHTTPSocket.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientHTTPSocket.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ServerHTTPSocket.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/win32/HTTPSocket/ServerHTTPSocket.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/Firemonkey/android/MobileHTTPRestClient.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exilon/QuickORM/HEAD/samples/ORMRestServerDemo/source/Firemonkey/android/MobileHTTPRestClient.res -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/Firemonkey/android/MobileHTTPRestClient.dpr: -------------------------------------------------------------------------------- 1 | program MobileHTTPRestClient; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | Main in 'Main.pas' {Form1}, 7 | Quick.ORM.RestClient.Cross in '..\..\..\..\Quick.ORM.RestClient.Cross.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Delphinus.Install.json: -------------------------------------------------------------------------------- 1 | { 2 | "search_pathes": 3 | [ 4 | { 5 | "pathes": ".", 6 | "platforms": "Win32;Win64;Android;Linux64" 7 | } 8 | ], 9 | "browsing_pathes": 10 | [ 11 | { 12 | "pathes": ".", 13 | "platforms": "Win32;Win64;Android;Linux64" 14 | } 15 | ], 16 | 17 | "source_folders": 18 | [ 19 | { 20 | "folder": ".", 21 | "recursive": true, 22 | "filter": "*;*.*" 23 | } 24 | ] 25 | 26 | } -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMRestClient.dpr: -------------------------------------------------------------------------------- 1 | program ORMRestClient; 2 | 3 | uses 4 | Vcl.Forms, 5 | ClientMain in 'ClientMain.pas' {MainForm}, 6 | Quick.ORM.Form.Login in '..\..\..\..\Quick.ORM.Form.Login.pas' {frmLogin}, 7 | Quick.ORM.Security.GUI in '..\..\..\..\Quick.ORM.Security.GUI.pas', 8 | Quick.AppSecurity in '..\..\..\..\Quick.AppSecurity.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TMainForm, MainForm); 16 | Application.CreateForm(TfrmLogin, frmLogin); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ClientHTTPSocket.dpr: -------------------------------------------------------------------------------- 1 | program ClientHTTPSocket; 2 | 3 | uses 4 | Vcl.Forms, 5 | ClientMain in 'ClientMain.pas' {MainForm}, 6 | Quick.ORM.Form.Login in '..\..\..\..\Quick.ORM.Form.Login.pas' {frmLogin}, 7 | Quick.ORM.Security.GUI in '..\..\..\..\Quick.ORM.Security.GUI.pas', 8 | Quick.AppSecurity in '..\..\..\..\Quick.AppSecurity.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TMainForm, MainForm); 16 | Application.CreateForm(TfrmLogin, frmLogin); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /quickorm.pas: -------------------------------------------------------------------------------- 1 | { This file was automatically created by Lazarus. Do not edit! 2 | This source is only used to compile and install the package. 3 | } 4 | 5 | unit quickORM; 6 | 7 | {$warn 5023 off : no warning about unused units} 8 | interface 9 | 10 | uses 11 | Quick.ORM.App.Config, Quick.ORM.DataBase, Quick.ORM.Engine, 12 | Quick.ORM.Form.Login, Quick.ORM.RestClient.Cross, Quick.ORM.RestClient, 13 | Quick.ORM.RestDB, Quick.ORM.RestDBFull, Quick.ORM.RestServer, 14 | Quick.ORM.Security.GUI, Quick.ORM.Security, Quick.ORM.Server.Base, 15 | Quick.ORM.Server.Config, Quick.ORM.UTF8Helper; 16 | 17 | implementation 18 | 19 | end. 20 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientHTTPSocket.dpr: -------------------------------------------------------------------------------- 1 | program ClientHTTPSocket; 2 | 3 | uses 4 | Vcl.Forms, 5 | ClientMain in 'ClientMain.pas' {MainForm}, 6 | Quick.ORM.Form.Login in '..\..\..\..\Quick.ORM.Form.Login.pas' {frmLogin}, 7 | Quick.ORM.Security.GUI in '..\..\..\..\Quick.ORM.Security.GUI.pas', 8 | Quick.AppSecurity in '..\..\..\..\Quick.AppSecurity.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TMainForm, MainForm); 16 | Application.CreateForm(TfrmLogin, frmLogin); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/common/ORMDemo.Interf.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.Interf; 2 | 3 | interface 4 | 5 | uses 6 | {$IFDEF NEXTGEN} 7 | SynCrossPlatformJSON, 8 | SynCrossPlatformRest; 9 | {$ELSE} 10 | mORMot; 11 | {$ENDIF} 12 | 13 | type 14 | 15 | IServiceMethods = interface(IInvokable) 16 | ['{4EB49814-A4A9-40D2-B85A-137DDF43C72C}'] 17 | function Sum(val1, val2 : Double) : Double; 18 | function Mult(val1, val2 : Double) : Double; 19 | function RandomNumber : Int64; 20 | end; 21 | 22 | implementation 23 | 24 | initialization 25 | 26 | {$IFNDEF NEXTGEN} 27 | TInterfaceFactory.RegisterInterfaces([TypeInfo(IServiceMethods)]); 28 | {$ENDIF} 29 | end. 30 | -------------------------------------------------------------------------------- /Delphinus.Info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "{03486B13-869C-4836-BF1A-828A93318F0D}", 3 | "name": "", 4 | "picture": "QuickORM.png", 5 | "license_type": "Apache-2.0", 6 | "license_file": "LICENSE.txt", 7 | "platforms": "Win32;Win64;Android;Linux64", 8 | "package_compiler_min": 22, 9 | "package_compiler_max": 33, 10 | "compiler_min": 22, 11 | "compiler_max": 33, 12 | "first_version": "", 13 | "report_url": "", 14 | "dependencies": 15 | [ 16 | { 17 | "id": "{039708CE-1DC1-4FC5-A58E-A77B3177A9C8}", 18 | "version_min": "1.0" 19 | } 20 | , 21 | { 22 | "id": "{58455621-E9CB-4DDC-8812-7FF096576B21}", 23 | "version_min": "1.0" 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ORMDemo.RestMethods.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.RestMethods; 2 | 3 | interface 4 | 5 | uses 6 | mORMot, 7 | ORMDemo.Interf; 8 | 9 | type 10 | 11 | TServiceMethods = class(TInjectableObject,IServiceMethods) 12 | public 13 | function Sum(val1, val2 : Double) : Double; 14 | function Mult(val1, val2 : Double) : Double; 15 | function RandomNumber : Int64; 16 | end; 17 | 18 | implementation 19 | 20 | function TServiceMethods.Sum(val1, val2 : Double) : Double; 21 | begin 22 | Result := val1 + val2; 23 | end; 24 | 25 | function TServiceMethods.Mult(val1: Double; val2: Double) : Double; 26 | begin 27 | Result := val1 * val2; 28 | end; 29 | 30 | function TServiceMethods.RandomNumber : Int64; 31 | begin 32 | Result := Random(999999999); 33 | end; 34 | 35 | end. 36 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMDemo.RestMethods.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.RestMethods; 2 | 3 | interface 4 | 5 | uses 6 | mORMot, 7 | ORMDemo.Interf; 8 | 9 | type 10 | 11 | TServiceMethods = class(TInjectableObject,IServiceMethods) 12 | public 13 | function Sum(val1, val2 : Double) : Double; 14 | function Mult(val1, val2 : Double) : Double; 15 | function RandomNumber : Int64; 16 | end; 17 | 18 | implementation 19 | 20 | function TServiceMethods.Sum(val1, val2 : Double) : Double; 21 | begin 22 | Result := val1 + val2; 23 | end; 24 | 25 | function TServiceMethods.Mult(val1: Double; val2: Double) : Double; 26 | begin 27 | Result := val1 * val2; 28 | end; 29 | 30 | function TServiceMethods.RandomNumber : Int64; 31 | begin 32 | Result := Random(999999999); 33 | end; 34 | 35 | end. 36 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ORMDemo.RestMethods.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.RestMethods; 2 | 3 | interface 4 | 5 | uses 6 | mORMot, 7 | ORMDemo.Interf; 8 | 9 | type 10 | 11 | TServiceMethods = class(TInjectableObject,IServiceMethods) 12 | public 13 | function Sum(val1, val2 : Double) : Double; 14 | function Mult(val1, val2 : Double) : Double; 15 | function RandomNumber : Int64; 16 | end; 17 | 18 | implementation 19 | 20 | function TServiceMethods.Sum(val1, val2 : Double) : Double; 21 | begin 22 | Result := val1 + val2; 23 | end; 24 | 25 | function TServiceMethods.Mult(val1: Double; val2: Double) : Double; 26 | begin 27 | Result := val1 * val2; 28 | end; 29 | 30 | function TServiceMethods.RandomNumber : Int64; 31 | begin 32 | Result := Random(999999999); 33 | end; 34 | 35 | end. 36 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ORMDemo.CustomServer.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.CustomServer; 2 | 3 | interface 4 | 5 | uses 6 | Classes, 7 | mORMot, 8 | mORMotSQLite3, 9 | Quick.ORM.RestServer; 10 | 11 | type 12 | TORMServer = class(TCustomORMServer) 13 | published 14 | procedure Test(Ctxt: TSQLRestServerURIContext); 15 | procedure AppActions(Ctxt: TSQLRestServerURIContext); 16 | procedure List(Ctxt: TSQLRestServerURIContext); 17 | end; 18 | 19 | implementation 20 | 21 | procedure TORMServer.Test(Ctxt: TSQLRestServerURIContext); 22 | begin 23 | Ctxt.Returns('{"Test" : "OK"}',200); 24 | end; 25 | 26 | procedure TORMServer.AppActions(Ctxt: TSQLRestServerURIContext); 27 | begin 28 | Ctxt.Returns('{"AppActions" : "OK"}',200); 29 | end; 30 | 31 | procedure TORMServer.List(Ctxt: TSQLRestServerURIContext); 32 | begin 33 | Ctxt.Returns('{"List" : "OK"}',200); 34 | end; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMDemo.CustomServer.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.CustomServer; 2 | 3 | interface 4 | 5 | uses 6 | Classes, 7 | mORMot, 8 | mORMotSQLite3, 9 | Quick.ORM.RestServer; 10 | 11 | type 12 | TORMServer = class(TCustomORMServer) 13 | published 14 | procedure Test(Ctxt: TSQLRestServerURIContext); 15 | procedure AppActions(Ctxt: TSQLRestServerURIContext); 16 | procedure List(Ctxt: TSQLRestServerURIContext); 17 | end; 18 | 19 | implementation 20 | 21 | procedure TORMServer.Test(Ctxt: TSQLRestServerURIContext); 22 | begin 23 | Ctxt.Returns('{"Test" : "OK"}',200); 24 | end; 25 | 26 | procedure TORMServer.AppActions(Ctxt: TSQLRestServerURIContext); 27 | begin 28 | Ctxt.Returns('{"AppActions" : "OK"}',200); 29 | end; 30 | 31 | procedure TORMServer.List(Ctxt: TSQLRestServerURIContext); 32 | begin 33 | Ctxt.Returns('{"List" : "OK"}',200); 34 | end; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ORMDemo.CustomServer.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.CustomServer; 2 | 3 | interface 4 | 5 | uses 6 | Classes, 7 | mORMot, 8 | mORMotSQLite3, 9 | Quick.ORM.RestServer; 10 | 11 | type 12 | TORMServer = class(TCustomORMServer) 13 | published 14 | procedure Test(Ctxt: TSQLRestServerURIContext); 15 | procedure AppActions(Ctxt: TSQLRestServerURIContext); 16 | procedure List(Ctxt: TSQLRestServerURIContext); 17 | end; 18 | 19 | implementation 20 | 21 | procedure TORMServer.Test(Ctxt: TSQLRestServerURIContext); 22 | begin 23 | Ctxt.Returns('{"Test" : "OK"}',200); 24 | end; 25 | 26 | procedure TORMServer.AppActions(Ctxt: TSQLRestServerURIContext); 27 | begin 28 | Ctxt.Returns('{"AppActions" : "OK"}',200); 29 | end; 30 | 31 | procedure TORMServer.List(Ctxt: TSQLRestServerURIContext); 32 | begin 33 | Ctxt.Returns('{"List" : "OK"}',200); 34 | end; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #ignore thumbnails created by windows 3 | Thumbs.db 4 | *.bak 5 | *.cache 6 | # Delphi compiler-generated binaries (safe to delete) 7 | *.exe 8 | *.dll 9 | *.bpl 10 | *.bpi 11 | *.dcp 12 | *.so 13 | *.apk 14 | *.drc 15 | *.map 16 | *.dres 17 | *.rsm 18 | *.tds 19 | *.dcu 20 | *.lib 21 | *.a 22 | *.o 23 | *.ocx 24 | *.zip 25 | *.log 26 | 27 | # Delphi autogenerated files (duplicated info) 28 | *.cfg 29 | *.hpp 30 | *Resource.rc 31 | 32 | # Delphi local files (user-specific info) 33 | *.local 34 | *.identcache 35 | *.projdata 36 | *.tvsconfig 37 | *.dsk 38 | 39 | # Delphi history and backups 40 | __history/ 41 | __recovery/ 42 | *.~* 43 | 44 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 45 | *.stat 46 | desktop.ini 47 | *.compiled 48 | 49 | samples/ORMRestServerDemo/bin/Win64/Debug/ 50 | 51 | samples/ORMRestServerDemo/bin/Android/Debug/ 52 | 53 | samples/ORMRestServerDemo/source/bin/Android/Debug/ 54 | 55 | samples/ORMRestServerDemo/source/Firemonkey/android/AndroidManifest\.template\.xml 56 | 57 | *.ppu 58 | 59 | *.rsj 60 | 61 | *.db3 62 | 63 | *.db3-journal 64 | 65 | samples/ORMRestServerDemo/source/fpc/backup/ 66 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/common/ORMDemo.Model.pas: -------------------------------------------------------------------------------- 1 | unit ORMDemo.Model; 2 | 3 | interface 4 | 5 | uses 6 | {$IFDEF NEXTGEN} 7 | SynCrossPlatformJSON, 8 | SynCrossPlatformRest, 9 | {$ELSE} 10 | mORMot, 11 | SynCommons, 12 | {$ENDIF} 13 | Quick.ORM.Engine; 14 | 15 | type 16 | TLogin = class 17 | private 18 | fUsername : RawUTF8; 19 | fUserPass : RawUTF8; 20 | fLastLogin : TDateTime; 21 | published 22 | property Username : RawUTF8 read fUsername write fUsername; 23 | property UserPass : RawUTF8 read fUserPass write fUserPass; 24 | property LastLogin : TDateTime read fLastLogin write fLastLogin; 25 | end; 26 | 27 | { TAUser } 28 | 29 | TAUser = class(TSQLRecordTimeStamped) 30 | private 31 | fName : RawUTF8; 32 | fSurname : RawUTF8; 33 | fAge : Integer; 34 | fLogin : TLogin; 35 | public 36 | constructor Create; override; 37 | published 38 | property Name : RawUTF8 read fName write fName; 39 | property Surname : RawUTF8 read fSurname write fSurname; 40 | property Age : Integer read fAge write fAge; 41 | property Login : TLogin read fLogin write fLogin; 42 | end; 43 | 44 | TAGroup = class(TSQLRecord) 45 | private 46 | fName : RawUTF8; 47 | fAllowNewUsers : Boolean; 48 | published 49 | property Name : RawUTF8 read fName write fName; 50 | property AllowNewUsers : Boolean read fAllowNewUsers write fAllowNewUsers; 51 | end; 52 | 53 | implementation 54 | 55 | { TAUser } 56 | 57 | constructor TAUser.Create; 58 | begin 59 | inherited; 60 | fLogin := TLogin.Create; 61 | end; 62 | 63 | end. 64 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ORMRestServer.lpi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | <UseAppBundle Value="False"/> 15 | <ResourceType Value="res"/> 16 | </General> 17 | <BuildModes Count="1"> 18 | <Item1 Name="Default" Default="True"/> 19 | </BuildModes> 20 | <PublishOptions> 21 | <Version Value="2"/> 22 | </PublishOptions> 23 | <RunParams> 24 | <FormatVersion Value="2"/> 25 | <Modes Count="0"/> 26 | </RunParams> 27 | <Units Count="1"> 28 | <Unit0> 29 | <Filename Value="ORMRestServer.pas"/> 30 | <IsPartOfProject Value="True"/> 31 | </Unit0> 32 | </Units> 33 | </ProjectOptions> 34 | <CompilerOptions> 35 | <Version Value="11"/> 36 | <PathDelim Value="\"/> 37 | <Target> 38 | <Filename Value="..\..\bin\lib\$(TargetCPU)-$(TargetOS)\ORMRestServer"/> 39 | </Target> 40 | <SearchPaths> 41 | <IncludeFiles Value="$(ProjOutDir);..\..\..\..\..\..\mORMot;..\..\..\..\..\..\mORMot\SQLite3"/> 42 | <Libraries Value="D:\Delphi\LibsRAD10\mORMot\static\i386-win32\"/> 43 | <OtherUnitFiles Value="..\..\..\..\..\QuickLib;..\..\..\..\..\QuickORM;..\..\..\..\..\..\mORMot;..\..\..\..\..\..\mORMot\SQLite3;..\common"/> 44 | <UnitOutputDirectory Value="..\..\bin\lib\$(TargetCPU)-$(TargetOS)\ppu"/> 45 | </SearchPaths> 46 | </CompilerOptions> 47 | <Debugging> 48 | <Exceptions Count="3"> 49 | <Item1> 50 | <Name Value="EAbort"/> 51 | </Item1> 52 | <Item2> 53 | <Name Value="ECodetoolError"/> 54 | </Item2> 55 | <Item3> 56 | <Name Value="EFOpenError"/> 57 | </Item3> 58 | </Exceptions> 59 | </Debugging> 60 | </CONFIG> 61 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ClientMain.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'ORMRestClient HTTP Socket' 5 | ClientHeight = 380 6 | ClientWidth = 635 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | Position = poScreenCenter 15 | OnClose = FormClose 16 | OnCreate = FormCreate 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object btnConnect: TButton 20 | Left = 552 21 | Top = 347 22 | Width = 75 23 | Height = 25 24 | Caption = 'Connect' 25 | TabOrder = 0 26 | OnClick = btnConnectClick 27 | end 28 | object meInfo: TMemo 29 | Left = 8 30 | Top = 8 31 | Width = 619 32 | Height = 273 33 | ReadOnly = True 34 | ScrollBars = ssVertical 35 | TabOrder = 1 36 | end 37 | object btnGetUsers: TButton 38 | Left = 463 39 | Top = 296 40 | Width = 75 41 | Height = 25 42 | Caption = 'Get Users' 43 | Enabled = False 44 | TabOrder = 2 45 | OnClick = btnGetUsersClick 46 | end 47 | object btnGetGroups: TButton 48 | Left = 382 49 | Top = 296 50 | Width = 75 51 | Height = 25 52 | Caption = 'Get Groups' 53 | Enabled = False 54 | TabOrder = 3 55 | OnClick = btnGetGroupsClick 56 | end 57 | object btnFuncSum: TButton 58 | Left = 95 59 | Top = 324 60 | Width = 75 61 | Height = 25 62 | Caption = 'Sum' 63 | Enabled = False 64 | TabOrder = 4 65 | OnClick = btnFuncSumClick 66 | end 67 | object btnFuncRandom: TButton 68 | Left = 301 69 | Top = 296 70 | Width = 75 71 | Height = 25 72 | Caption = 'Random' 73 | Enabled = False 74 | TabOrder = 5 75 | OnClick = btnFuncRandomClick 76 | end 77 | object btnFuncMult: TButton 78 | Left = 95 79 | Top = 296 80 | Width = 75 81 | Height = 25 82 | Caption = 'Mult' 83 | Enabled = False 84 | TabOrder = 6 85 | OnClick = btnFuncMultClick 86 | end 87 | object edVal1: TEdit 88 | Left = 12 89 | Top = 298 90 | Width = 77 91 | Height = 21 92 | TabOrder = 7 93 | Text = '4' 94 | end 95 | object edVal2: TEdit 96 | Left = 12 97 | Top = 325 98 | Width = 77 99 | Height = 21 100 | TabOrder = 8 101 | Text = '2' 102 | end 103 | end 104 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ClientMain.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'ORMRestClient HTTP Socket' 5 | ClientHeight = 380 6 | ClientWidth = 635 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | Position = poScreenCenter 15 | OnClose = FormClose 16 | OnCreate = FormCreate 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object btnConnect: TButton 20 | Left = 552 21 | Top = 347 22 | Width = 75 23 | Height = 25 24 | Caption = 'Connect' 25 | TabOrder = 0 26 | OnClick = btnConnectClick 27 | end 28 | object meInfo: TMemo 29 | Left = 8 30 | Top = 8 31 | Width = 619 32 | Height = 273 33 | ReadOnly = True 34 | ScrollBars = ssVertical 35 | TabOrder = 1 36 | end 37 | object btnGetUsers: TButton 38 | Left = 463 39 | Top = 296 40 | Width = 75 41 | Height = 25 42 | Caption = 'Get Users' 43 | Enabled = False 44 | TabOrder = 2 45 | OnClick = btnGetUsersClick 46 | end 47 | object btnGetGroups: TButton 48 | Left = 382 49 | Top = 296 50 | Width = 75 51 | Height = 25 52 | Caption = 'Get Groups' 53 | Enabled = False 54 | TabOrder = 3 55 | OnClick = btnGetGroupsClick 56 | end 57 | object btnFuncSum: TButton 58 | Left = 95 59 | Top = 324 60 | Width = 75 61 | Height = 25 62 | Caption = 'Sum' 63 | Enabled = False 64 | TabOrder = 4 65 | OnClick = btnFuncSumClick 66 | end 67 | object btnFuncRandom: TButton 68 | Left = 301 69 | Top = 296 70 | Width = 75 71 | Height = 25 72 | Caption = 'Random' 73 | Enabled = False 74 | TabOrder = 5 75 | OnClick = btnFuncRandomClick 76 | end 77 | object btnFuncMult: TButton 78 | Left = 95 79 | Top = 296 80 | Width = 75 81 | Height = 25 82 | Caption = 'Mult' 83 | Enabled = False 84 | TabOrder = 6 85 | OnClick = btnFuncMultClick 86 | end 87 | object edVal1: TEdit 88 | Left = 12 89 | Top = 298 90 | Width = 77 91 | Height = 21 92 | TabOrder = 7 93 | Text = '4' 94 | end 95 | object edVal2: TEdit 96 | Left = 12 97 | Top = 325 98 | Width = 77 99 | Height = 21 100 | TabOrder = 8 101 | Text = '2' 102 | end 103 | end 104 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientMain.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'ORMRestClient HTTP Socket' 5 | ClientHeight = 380 6 | ClientWidth = 635 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | Position = poScreenCenter 15 | OnClose = FormClose 16 | OnCreate = FormCreate 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object btnConnect: TButton 20 | Left = 552 21 | Top = 347 22 | Width = 75 23 | Height = 25 24 | Caption = 'Connect' 25 | TabOrder = 0 26 | OnClick = btnConnectClick 27 | end 28 | object meInfo: TMemo 29 | Left = 8 30 | Top = 8 31 | Width = 619 32 | Height = 273 33 | ReadOnly = True 34 | ScrollBars = ssVertical 35 | TabOrder = 1 36 | end 37 | object btnGetUsers: TButton 38 | Left = 463 39 | Top = 296 40 | Width = 75 41 | Height = 25 42 | Caption = 'Get Users' 43 | Enabled = False 44 | TabOrder = 2 45 | OnClick = btnGetUsersClick 46 | end 47 | object btnGetGroups: TButton 48 | Left = 382 49 | Top = 296 50 | Width = 75 51 | Height = 25 52 | Caption = 'Get Groups' 53 | Enabled = False 54 | TabOrder = 3 55 | OnClick = btnGetGroupsClick 56 | end 57 | object btnFuncSum: TButton 58 | Left = 95 59 | Top = 324 60 | Width = 75 61 | Height = 25 62 | Caption = 'Sum' 63 | Enabled = False 64 | TabOrder = 4 65 | OnClick = btnFuncSumClick 66 | end 67 | object btnFuncRandom: TButton 68 | Left = 301 69 | Top = 296 70 | Width = 75 71 | Height = 25 72 | Caption = 'Random' 73 | Enabled = False 74 | TabOrder = 5 75 | OnClick = btnFuncRandomClick 76 | end 77 | object btnFuncMult: TButton 78 | Left = 95 79 | Top = 296 80 | Width = 75 81 | Height = 25 82 | Caption = 'Mult' 83 | Enabled = False 84 | TabOrder = 6 85 | OnClick = btnFuncMultClick 86 | end 87 | object edVal1: TEdit 88 | Left = 12 89 | Top = 298 90 | Width = 77 91 | Height = 21 92 | TabOrder = 7 93 | Text = '4' 94 | end 95 | object edVal2: TEdit 96 | Left = 12 97 | Top = 325 98 | Width = 77 99 | Height = 21 100 | TabOrder = 8 101 | Text = '2' 102 | end 103 | end 104 | -------------------------------------------------------------------------------- /Quick.ORM.Form.Login.dfm: -------------------------------------------------------------------------------- 1 | object frmLogin: TfrmLogin 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [] 5 | BorderStyle = bsDialog 6 | Caption = 'Login' 7 | ClientHeight = 158 8 | ClientWidth = 338 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | OldCreateOrder = False 16 | Position = poOwnerFormCenter 17 | OnCreate = FormCreate 18 | DesignSize = ( 19 | 338 20 | 158) 21 | PixelsPerInch = 96 22 | TextHeight = 13 23 | object lblHost: TLabel 24 | Left = 83 25 | Top = 12 26 | Width = 54 27 | Height = 13 28 | AutoSize = False 29 | Caption = 'Server:' 30 | end 31 | object Label2: TLabel 32 | Left = 83 33 | Top = 39 34 | Width = 54 35 | Height = 13 36 | AutoSize = False 37 | Caption = 'User:' 38 | end 39 | object Label3: TLabel 40 | Left = 83 41 | Top = 66 42 | Width = 54 43 | Height = 13 44 | AutoSize = False 45 | Caption = 'Password:' 46 | end 47 | object imgLogo: TImage 48 | Left = 8 49 | Top = 14 50 | Width = 64 51 | Height = 64 52 | Center = True 53 | Stretch = True 54 | end 55 | object edHost: TEdit 56 | Left = 143 57 | Top = 9 58 | Width = 119 59 | Height = 21 60 | TabOrder = 0 61 | TextHint = 'Host or ip' 62 | end 63 | object edUsername: TEdit 64 | Left = 143 65 | Top = 36 66 | Width = 161 67 | Height = 21 68 | TabOrder = 2 69 | TextHint = 'User name' 70 | end 71 | object edUserPass: TEdit 72 | Left = 143 73 | Top = 63 74 | Width = 161 75 | Height = 21 76 | PasswordChar = '*' 77 | TabOrder = 3 78 | TextHint = 'Password' 79 | end 80 | object btnOk: TButton 81 | Left = 170 82 | Top = 125 83 | Width = 76 84 | Height = 25 85 | Anchors = [akRight, akBottom] 86 | Caption = 'Ok' 87 | ModalResult = 1 88 | TabOrder = 5 89 | end 90 | object btnCancel: TButton 91 | Left = 255 92 | Top = 125 93 | Width = 75 94 | Height = 25 95 | Anchors = [akRight, akBottom] 96 | Caption = 'Cancel' 97 | ModalResult = 2 98 | TabOrder = 6 99 | end 100 | object cxSaveCredentials: TCheckBox 101 | Left = 143 102 | Top = 97 103 | Width = 187 104 | Height = 17 105 | Caption = 'Remember my credentials' 106 | TabOrder = 4 107 | end 108 | object edPort: TEdit 109 | Left = 265 110 | Top = 9 111 | Width = 39 112 | Height = 21 113 | NumbersOnly = True 114 | TabOrder = 1 115 | TextHint = 'Port' 116 | end 117 | end 118 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/Firemonkey/android/Main.pas: -------------------------------------------------------------------------------- 1 | unit Main; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, 7 | System.Types, 8 | System.UITypes, 9 | System.Classes, 10 | System.Variants, 11 | FMX.Types, 12 | FMX.Controls, 13 | FMX.Forms, 14 | FMX.Graphics, 15 | FMX.Dialogs, 16 | FMX.Controls.Presentation, 17 | FMX.StdCtrls, 18 | FMX.ScrollBox, 19 | FMX.Memo, 20 | FMX.Edit, 21 | System.Generics.Collections, 22 | SynCrossPlatformRest, 23 | Quick.Commons, 24 | Quick.ORM.Engine, 25 | Quick.ORM.RestClient.Cross, 26 | ORMDemo.Model, 27 | ORMDemo.Interf; //unit contains interface for rest methods; 28 | 29 | type 30 | TForm1 = class(TForm) 31 | meInfo: TMemo; 32 | Panel1: TPanel; 33 | Panel2: TPanel; 34 | edHost: TEdit; 35 | btnConnect: TButton; 36 | btnRandom: TButton; 37 | btnGetUsers: TButton; 38 | procedure FormCreate(Sender: TObject); 39 | procedure btnConnectClick(Sender: TObject); 40 | procedure btnGetUsersClick(Sender: TObject); 41 | procedure GetUsers; 42 | private 43 | { Private declarations } 44 | public 45 | { Public declarations } 46 | end; 47 | 48 | var 49 | Form1: TForm1; 50 | RestClient : TORMRestClient; 51 | RestFunc : IServiceMethods; 52 | 53 | implementation 54 | 55 | {$R *.fmx} 56 | 57 | procedure TForm1.btnConnectClick(Sender: TObject); 58 | var 59 | done : Boolean; 60 | begin 61 | RestClient.Host := edHost.Text; 62 | done := RestClient.Connect; 63 | if done then meInfo.Lines.Add('Connected to RestServer!') 64 | else 65 | begin 66 | meInfo.Lines.Add('Can''t connect to Restserver!'); 67 | Exit; 68 | end; 69 | end; 70 | 71 | procedure TForm1.btnGetUsersClick(Sender: TObject); 72 | begin 73 | GetUsers; 74 | end; 75 | 76 | procedure TForm1.GetUsers; 77 | var 78 | User : TAUser; 79 | begin 80 | User := TAUser.CreateAndFillPrepare(RestClient.ORM,'','',[]); 81 | try 82 | if User = nil then 83 | begin 84 | meInfo.Lines.Add('No results found!'); 85 | Exit; 86 | end; 87 | while User.FillOne do 88 | begin 89 | meInfo.Lines.Add(Format('%s / %d year(s) / LastLogin: %s',[User.Name,User.Age,DateTimeToStr(User.Login.LastLogin)])); 90 | end; 91 | finally 92 | User.Free; 93 | end; 94 | end; 95 | 96 | procedure TForm1.FormCreate(Sender: TObject); 97 | begin 98 | RestClient := TORMRestClient.Create; 99 | RestClient.Host := '192.168.1.107'; 100 | RestClient.Port := 8099; 101 | RestClient.DataBase.IncludedClasses := [TAUser,TAGroup]; 102 | RestClient.Login.UserName := 'Admin'; 103 | RestClient.Login.UserPass := 'exilon'; 104 | RestClient.HTTPOptions.Protocol := TSrvProtocol.spHTTP_Socket; 105 | RestClient.HTTPOptions.AuthMode := TAuthMode.amDefault; 106 | RestClient.Service.MethodInterface := IServiceMethods; 107 | RestClient.Service.InstanceImplementation := sicShared; 108 | RestClient.Service.Enabled := True; 109 | end; 110 | 111 | end. 112 | -------------------------------------------------------------------------------- /quickorm.lpk: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <Package Version="4"> 4 | <PathDelim Value="\"/> 5 | <Name Value="quickORM"/> 6 | <CompilerOptions> 7 | <Version Value="11"/> 8 | <PathDelim Value="\"/> 9 | <SearchPaths> 10 | <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)\"/> 11 | </SearchPaths> 12 | </CompilerOptions> 13 | <Version Major="1"/> 14 | <Files Count="15"> 15 | <Item1> 16 | <Filename Value="Quick.ORM.App.Config.pas"/> 17 | <UnitName Value="Quick.ORM.App.Config"/> 18 | </Item1> 19 | <Item2> 20 | <Filename Value="Quick.ORM.DataBase.pas"/> 21 | <UnitName Value="Quick.ORM.DataBase"/> 22 | </Item2> 23 | <Item3> 24 | <Filename Value="Quick.ORM.Engine.pas"/> 25 | <UnitName Value="Quick.ORM.Engine"/> 26 | </Item3> 27 | <Item4> 28 | <Filename Value="Quick.ORM.Form.Login.dfm"/> 29 | <Type Value="Text"/> 30 | </Item4> 31 | <Item5> 32 | <Filename Value="Quick.ORM.Form.Login.pas"/> 33 | <UnitName Value="Quick.ORM.Form.Login"/> 34 | </Item5> 35 | <Item6> 36 | <Filename Value="Quick.ORM.RestClient.Cross.pas"/> 37 | <UnitName Value="Quick.ORM.RestClient.Cross"/> 38 | </Item6> 39 | <Item7> 40 | <Filename Value="Quick.ORM.RestClient.pas"/> 41 | <UnitName Value="Quick.ORM.RestClient"/> 42 | </Item7> 43 | <Item8> 44 | <Filename Value="Quick.ORM.RestDB.pas"/> 45 | <UnitName Value="Quick.ORM.RestDB"/> 46 | </Item8> 47 | <Item9> 48 | <Filename Value="Quick.ORM.RestDBFull.pas"/> 49 | <UnitName Value="Quick.ORM.RestDBFull"/> 50 | </Item9> 51 | <Item10> 52 | <Filename Value="Quick.ORM.RestServer.pas"/> 53 | <UnitName Value="Quick.ORM.RestServer"/> 54 | </Item10> 55 | <Item11> 56 | <Filename Value="Quick.ORM.Security.GUI.pas"/> 57 | <UnitName Value="Quick.ORM.Security.GUI"/> 58 | </Item11> 59 | <Item12> 60 | <Filename Value="Quick.ORM.Security.pas"/> 61 | <UnitName Value="Quick.ORM.Security"/> 62 | </Item12> 63 | <Item13> 64 | <Filename Value="Quick.ORM.Server.Base.pas"/> 65 | <UnitName Value="Quick.ORM.Server.Base"/> 66 | </Item13> 67 | <Item14> 68 | <Filename Value="Quick.ORM.Server.Config.pas"/> 69 | <UnitName Value="Quick.ORM.Server.Config"/> 70 | </Item14> 71 | <Item15> 72 | <Filename Value="Quick.ORM.UTF8Helper.pas"/> 73 | <UnitName Value="Quick.UTF8Helper"/> 74 | </Item15> 75 | </Files> 76 | <RequiredPkgs Count="3"> 77 | <Item1> 78 | <PackageName Value="QuickLib"/> 79 | </Item1> 80 | <Item2> 81 | <PackageName Value="mormot"/> 82 | </Item2> 83 | <Item3> 84 | <PackageName Value="FCL"/> 85 | </Item3> 86 | </RequiredPkgs> 87 | <UsageOptions> 88 | <UnitPath Value="$(PkgOutDir)"/> 89 | </UsageOptions> 90 | <PublishOptions> 91 | <Version Value="2"/> 92 | </PublishOptions> 93 | </Package> 94 | </CONFIG> 95 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/Firemonkey/android/Main.fmx: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Form1' 5 | ClientHeight = 593 6 | ClientWidth = 449 7 | FormFactor.Width = 320 8 | FormFactor.Height = 480 9 | FormFactor.Devices = [Desktop] 10 | OnCreate = FormCreate 11 | DesignerMasterStyle = 3 12 | object meInfo: TMemo 13 | Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] 14 | DataDetectorTypes = [] 15 | Align = Client 16 | Size.Width = 449.000000000000000000 17 | Size.Height = 495.000000000000000000 18 | Size.PlatformDefault = False 19 | TabOrder = 1 20 | Viewport.Width = 441.000000000000000000 21 | Viewport.Height = 487.000000000000000000 22 | end 23 | object Panel1: TPanel 24 | Align = Bottom 25 | Position.Y = 544.000000000000000000 26 | Size.Width = 449.000000000000000000 27 | Size.Height = 49.000000000000000000 28 | Size.PlatformDefault = False 29 | TabOrder = 2 30 | object btnRandom: TButton 31 | Align = Right 32 | Margins.Top = 5.000000000000000000 33 | Margins.Right = 5.000000000000000000 34 | Margins.Bottom = 5.000000000000000000 35 | Position.X = 181.000000000000000000 36 | Position.Y = 5.000000000000000000 37 | Size.Width = 129.000000000000000000 38 | Size.Height = 39.000000000000000000 39 | Size.PlatformDefault = False 40 | TabOrder = 1 41 | Text = 'Random' 42 | end 43 | object btnGetUsers: TButton 44 | Align = Right 45 | Margins.Top = 5.000000000000000000 46 | Margins.Right = 5.000000000000000000 47 | Margins.Bottom = 5.000000000000000000 48 | Position.X = 315.000000000000000000 49 | Position.Y = 5.000000000000000000 50 | Size.Width = 129.000000000000000000 51 | Size.Height = 39.000000000000000000 52 | Size.PlatformDefault = False 53 | TabOrder = 0 54 | Text = 'Get Users' 55 | OnClick = btnGetUsersClick 56 | end 57 | end 58 | object Panel2: TPanel 59 | Align = MostTop 60 | Size.Width = 449.000000000000000000 61 | Size.Height = 49.000000000000000000 62 | Size.PlatformDefault = False 63 | TabOrder = 3 64 | object edHost: TEdit 65 | Touch.InteractiveGestures = [LongTap, DoubleTap] 66 | Anchors = [akLeft, akTop, akRight] 67 | TabOrder = 1 68 | Text = '192.168.1.107' 69 | Position.X = 8.000000000000000000 70 | Position.Y = 8.000000000000000000 71 | Size.Width = 300.000000000000000000 72 | Size.Height = 32.000000000000000000 73 | Size.PlatformDefault = False 74 | end 75 | object btnConnect: TButton 76 | Align = Right 77 | Margins.Left = 5.000000000000000000 78 | Margins.Top = 5.000000000000000000 79 | Margins.Right = 5.000000000000000000 80 | Margins.Bottom = 5.000000000000000000 81 | Position.X = 315.000000000000000000 82 | Position.Y = 5.000000000000000000 83 | Size.Width = 129.000000000000000000 84 | Size.Height = 39.000000000000000000 85 | Size.PlatformDefault = False 86 | TabOrder = 0 87 | Text = 'Connect' 88 | OnClick = btnConnectClick 89 | end 90 | end 91 | end 92 | -------------------------------------------------------------------------------- /Quick.ORM.DataBase.pas: -------------------------------------------------------------------------------- 1 | { *************************************************************************** 2 | 3 | Copyright (c) 2016-2019 Kike P�rez 4 | 5 | Unit : Quick.ORM.DataBase 6 | Description : Rest ORM Database config & connection 7 | Author : Kike P�rez 8 | Version : 1.2 9 | Created : 20/06/2017 10 | Modified : 27/02/2019 11 | 12 | This file is part of QuickORM: https://github.com/exilon/QuickORM 13 | 14 | Uses Synopse mORMot framework. Copyright (C) 2017 Arnaud Bouchez 15 | Synopse Informatique - https://synopse.info 16 | 17 | *************************************************************************** 18 | 19 | Licensed under the Apache License, Version 2.0 (the "License"); 20 | you may not use this file except in compliance with the License. 21 | You may obtain a copy of the License at 22 | 23 | http://www.apache.org/licenses/LICENSE-2.0 24 | 25 | Unless required by applicable law or agreed to in writing, software 26 | distributed under the License is distributed on an "AS IS" BASIS, 27 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 28 | See the License for the specific language governing permissions and 29 | limitations under the License. 30 | 31 | *************************************************************************** } 32 | 33 | unit Quick.ORM.DataBase; 34 | 35 | {$i QuickORM.inc} 36 | 37 | interface 38 | 39 | uses 40 | Classes, 41 | SysUtils, 42 | SynCommons, 43 | mORMot, 44 | mORMotDB, 45 | SynDB, 46 | {$IFNDEF FPC} 47 | System.IOUtils, 48 | {$ELSE} 49 | Quick.Files, 50 | {$ENDIF} 51 | Quick.Commons, 52 | Quick.ORM.Engine; 53 | 54 | type 55 | 56 | TORMDataBase = class 57 | private 58 | fSQLProperties : TSQLDBConnectionProperties; 59 | fDBFileName : RawUTF8; 60 | fDBType : TDBType; 61 | fDBIndexes : TDBIndexArray; 62 | fDBMappingFields : TDBMappingArray; 63 | fFullMemoryMode : Boolean; 64 | fModel : TSQLModel; 65 | faRootURI : RawUTF8; 66 | fIncludedClasses : TSQLRecordClassArray; 67 | fSQLConnection : TSQLConnection; 68 | fLockMode : TSQLiteLockMode; 69 | procedure SetDBFileName(const dbfname : RawUTF8); 70 | public 71 | property DBType : TDBType read fDBType write fDBType; 72 | property DBFileName : RawUTF8 read fDBFileName write SetDBFileName; 73 | property DBIndexes : TDBIndexArray read fDBIndexes write fDBIndexes; 74 | property DBMappingFields : TDBMappingArray read fDBMappingFields write fDBMappingFields; 75 | property Model : TSQLModel read fModel write fModel; 76 | property FullMemoryMode : Boolean read fFullMemoryMode write fFullMemoryMode; 77 | property LockMode : TSQLiteLockMode read fLockMode write fLockMode; 78 | property aRootURI : RawUTF8 read faRootURI write faRootURI; 79 | property IncludedClasses : TSQLRecordClassArray read fIncludedClasses write fIncludedClasses; 80 | property SQLProperties : TSQLDBConnectionProperties read fSQLProperties write fSQLProperties; 81 | property SQLConnection : TSQLConnection read fSQLConnection write fSQLConnection; 82 | constructor Create; 83 | destructor Destroy; override; 84 | end; 85 | 86 | implementation 87 | 88 | 89 | {TORMDataBase Class} 90 | 91 | constructor TORMDataBase.Create; 92 | begin 93 | fDBType := dtSQLite; 94 | fModel := nil; 95 | faRootURI := 'root'; 96 | fDBFileName := '.\default.db3'; 97 | fSQLConnection := TSQLConnection.Create; 98 | fSQLConnection.Provider := TDBProvider.dbMSSQL; 99 | fLockMode := TSQLiteLockMode.lmNormal; 100 | end; 101 | 102 | destructor TORMDataBase.Destroy; 103 | begin 104 | if Assigned(fModel) then fModel.Free; 105 | if Assigned(fSQLConnection) then fSQLConnection.Free; 106 | inherited; 107 | end; 108 | 109 | procedure TORMDataBase.SetDBFileName(const dbfname : RawUTF8); 110 | begin 111 | //if dbfile not found, sets as current app dir 112 | if (CompareText(dbfname,'SQLITE_MEMORY_DATABASE_NAME') = 0) or TFile.Exists(dbfname) then fDBFileName := dbfname 113 | else fDBFileName := Format('%s\%s',[path.EXEPATH,TPath.GetFileName(dbfname)]); 114 | end; 115 | 116 | end. 117 | -------------------------------------------------------------------------------- /QuickORM.inc: -------------------------------------------------------------------------------- 1 | { 2 | This file is part of QuickORM: https://github.com/exilon/QuickORM 3 | 4 | QuickLibs. Copyright (C) 2020 Kike Pérez 5 | Exilon - https://www.exilon.es 6 | 7 | *************************************************************************** 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | *************************************************************************** 22 | } 23 | 24 | {$ifdef FPC} 25 | {$MODE DELPHI} 26 | 27 | {$INLINE ON} 28 | {$define HASINLINE} 29 | 30 | {$ifdef LINUX} 31 | {$define FPCLINUX} 32 | {$endif} 33 | 34 | {$ifdef ANDROID} 35 | {$define LINUX} 36 | {$endif} 37 | 38 | {$ifdef VER2_7} 39 | {$define ISFPC27} 40 | {$endif} 41 | 42 | {$ifdef VER3_0} 43 | {$define ISFPC27} 44 | {$define ISFPC30} 45 | {$endif} 46 | 47 | {$ifdef VER3_1} 48 | {$define ISFPC27} 49 | {$define ISFPC30} 50 | {$endif} 51 | 52 | {$ifdef FPC_REQUIRES_PROPER_ALIGNMENT} 53 | {$define FPC_ENUMHASINNER} 54 | {$endif} 55 | 56 | {$ifdef FPC_HAS_MANAGEMENT_OPERATORS} 57 | {$define ISDELPHI2006ANDUP} 58 | {$endif FPC_HAS_MANAGEMENT_OPERATORS} 59 | 60 | {$else FPC} 61 | 62 | {$ifdef CONDITIONALEXPRESSIONS} //Delphi 6 or newer 63 | {$define HASINTERFACERTTI} //interface RTTI (not FPC) 64 | {$ifndef LINUX} 65 | {$ifdef VER140} 66 | {$define DELPHI6_UP} //Delphi 6 or newer 67 | {$else} 68 | {$define DELPHI7_UP} //Delphi 7 or newer 69 | {$endif} 70 | {$endif LINUX} 71 | {$if CompilerVersion >= 17} 72 | {$define DELPHI2005_UP} //Delphi 2005 or newer 73 | {$ifend} 74 | {$if CompilerVersion >= 18} 75 | {$define DELPHI2006_UP} //Delphi 2006 or newer 76 | {$define HASINLINE} 77 | {$ifend} 78 | {$if CompilerVersion > 18} 79 | {$define DELPHI2007_UP} //Delphi 2007 or newer 80 | {$ifend} 81 | {$if CompilerVersion = 20} 82 | {$define DELPHI2009_UP} //Delphi 2009 83 | {$ifend} 84 | {$if CompilerVersion >= 21.0} //Delphi 2010 85 | {$define DELPHI2010_UP} 86 | {$define FPC_OR_UNICODE} 87 | {$ifend} 88 | {$if CompilerVersion >= 22.0} //Delphi XE 89 | {$define DELPHIXE_UP} 90 | {$ifend} 91 | {$if CompilerVersion >= 23.0} //Delphi XE2 92 | {$define DELPHIXE2_UP} 93 | {$ifend} 94 | {$if CompilerVersion >= 24.0} //Delphi XE3 95 | {$define DELPHIXE3_UP} 96 | {$ifend} 97 | {$if CompilerVersion >= 25.0} //Delphi XE4 98 | {$define DELPHIXE4_UP} 99 | {$ifend} 100 | {$if CompilerVersion >= 26.0} //Delphi XE5 101 | {$define DELPHIXE5_UP} 102 | {$ifend} 103 | {$if CompilerVersion >= 27.0} //Delphi XE6 104 | {$define DELPHIXE6_UP} 105 | {$ifend} 106 | {$if CompilerVersion >= 28.0} //Delphi XE7 107 | {$define DELPHIXE7_UP} 108 | {$ifend} 109 | {$if CompilerVersion >= 29.0} //Delphi XE8 110 | {$define DELPHIXE8_UP} 111 | {$ifend} 112 | {$if CompilerVersion >= 30.0} //Delphi XE10 Seattle 113 | {$define DELPHIRX10_UP} 114 | {$define DELPHISEATTLE_UP} 115 | {$ifend} 116 | {$if CompilerVersion >= 31.0} //Delphi RX10.1 Berlin 117 | {$define DELPHIRX101_UP} 118 | {$define DELPHIBERLIN_UP} 119 | {$ifend} 120 | {$if CompilerVersion >= 32.0} //Delphi RX10.2 Tokyo 121 | {$define DELPHIRX102_UP} 122 | {$define DELPHITOKYO_UP} 123 | {$ifdef LINUX} 124 | {$define DELPHILINUX} 125 | {$ifend} 126 | {$ifend} 127 | {$if CompilerVersion >= 33.0} //Delphi RX10.3 Rio 128 | {$define DELPHIRX103_UP} 129 | {$define DELPHIRIO_UP} 130 | {$ifend} 131 | {$if CompilerVersion >= 33.0} //Delphi RX10.4 Sydney 132 | {$define DELPHIRX104_UP} 133 | {$define DELPHISYDNEY_UP} 134 | {$if defined(ANDROID) OR defined(LINUX) OR defined(IOS)} 135 | {$define NEXTGEN} //compatibility with older delphis 136 | {$endif} 137 | {$ifend} 138 | {$else} 139 | //Delphi 5 or older 140 | {$define DELPHI6OROLDER} 141 | {$define DELPHI5OROLDER} 142 | {$define DELPHI5ORFPC} 143 | {$define MSWINDOWS} 144 | {$endif} 145 | 146 | {$endif FPC} 147 | 148 | {$ifdef VER150} 149 | {$WARN SYMBOL_DEPRECATED OFF} 150 | {$WARN UNSAFE_TYPE OFF} 151 | {$WARN UNSAFE_CODE OFF} 152 | {$WARN UNSAFE_CAST OFF} 153 | {$ENDIF} 154 | 155 | {$ifdef CONDITIONALEXPRESSIONS} //Delphi 6 or newer 156 | {.$WARN SYMBOL_PLATFORM OFF} 157 | {.$WARN UNIT_PLATFORM OFF} 158 | {$endif} 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ClientMain.pas: -------------------------------------------------------------------------------- 1 | unit ClientMain; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, 8 | mORMot, 9 | SynCommons, 10 | Quick.ORM.Engine, 11 | Quick.ORM.RestClient, 12 | ORMDemo.Model, //unit contains Models for Demo 13 | Vcl.StdCtrls, 14 | System.Generics.Collections, 15 | ORMDemo.Interf; //unit contains interface for rest methods 16 | 17 | type 18 | TMainForm = class(TForm) 19 | btnConnect: TButton; 20 | meInfo: TMemo; 21 | btnGetUsers: TButton; 22 | btnGetGroups: TButton; 23 | btnFuncSum: TButton; 24 | btnFuncRandom: TButton; 25 | btnFuncMult: TButton; 26 | edVal1: TEdit; 27 | edVal2: TEdit; 28 | procedure FormCreate(Sender: TObject); 29 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 30 | procedure btnConnectClick(Sender: TObject); 31 | procedure btnGetUsersClick(Sender: TObject); 32 | procedure GetUsers; 33 | procedure GetGroups; 34 | procedure btnGetGroupsClick(Sender: TObject); 35 | procedure btnFuncSumClick(Sender: TObject); 36 | procedure btnFuncMultClick(Sender: TObject); 37 | procedure btnFuncRandomClick(Sender: TObject); 38 | private 39 | { Private declarations } 40 | public 41 | { Public declarations } 42 | end; 43 | 44 | var 45 | MainForm: TMainForm; 46 | RestClient : TORMRestClient; 47 | RestFunc : IServiceMethods; 48 | 49 | implementation 50 | 51 | {$R *.dfm} 52 | 53 | procedure TMainForm.btnConnectClick(Sender: TObject); 54 | var 55 | done : Boolean; 56 | begin 57 | if RestClient.HTTPOptions.AuthMode = amNoAuthentication then done := RestClient.Connect 58 | else done := RestClient.LoginPrompt(True); 59 | //done := RestClient.Connect(edHost.Text,StrToInt(edPort.Text)); 60 | if done then meInfo.Lines.Add('Connected to RestServer!') 61 | else 62 | begin 63 | meInfo.Lines.Add('Can''t connect to Restserver!'); 64 | Exit; 65 | end; 66 | btnGetUsers.Enabled := done; 67 | btnGetGroups.Enabled := done; 68 | btnFuncSum.Enabled := done; 69 | btnFuncMult.Enabled := done; 70 | btnFuncRandom.Enabled := done; 71 | 72 | //gets Interface-Method service 73 | if RestClient.Service.Enabled then RestClient.Service.SetRestMethod(RestFunc); 74 | 75 | //show apps actions access security 76 | if RestClient.ActionAllowed('Home.Open') then meInfo.Lines.Add('Allowed "Home.Open"') 77 | else meInfo.Lines.Add('Denied "Home.Open"'); 78 | 79 | if RestClient.ActionAllowed('Users.List') then meInfo.Lines.Add('Allowed "Users.List"') 80 | else meInfo.Lines.Add('Denied "Users.List"'); 81 | end; 82 | 83 | procedure TMainForm.btnFuncMultClick(Sender: TObject); 84 | begin 85 | meInfo.Lines.Add(FloatToStr(RestFunc.Mult(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 86 | end; 87 | 88 | procedure TMainForm.btnFuncRandomClick(Sender: TObject); 89 | begin 90 | meInfo.Lines.Add(IntToStr(RestFunc.RandomNumber)); 91 | end; 92 | 93 | procedure TMainForm.btnFuncSumClick(Sender: TObject); 94 | begin 95 | meInfo.Lines.Add(FloatToStr(RestFunc.Sum(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 96 | end; 97 | 98 | procedure TMainForm.btnGetGroupsClick(Sender: TObject); 99 | begin 100 | GetGroups; 101 | end; 102 | 103 | procedure TMainForm.btnGetUsersClick(Sender: TObject); 104 | begin 105 | if RestClient.ActionAllowed('Users.List') then GetUsers 106 | else ShowMessage('Action not allowed!'); 107 | end; 108 | 109 | procedure TMainForm.GetUsers; 110 | var 111 | User : TAUser; 112 | begin 113 | User := TAUser.CreateAndFillPrepare(RestClient.ORM,'',[]); 114 | try 115 | if User = nil then 116 | begin 117 | meInfo.Lines.Add('No results found!'); 118 | Exit; 119 | end; 120 | while User.FillOne do 121 | begin 122 | meInfo.Lines.Add(Format('%s / %d year(s) / LastLogin: %s',[User.Name,User.Age,DateTimeToStr(User.Login.LastLogin)])); 123 | end; 124 | finally 125 | User.Free; 126 | end; 127 | end; 128 | 129 | procedure TMainForm.GetGroups; 130 | var 131 | Group : TAGroup; 132 | Groups : TObjectList<TAGroup>; 133 | begin 134 | Groups := RestClient.ORM.RetrieveList<TAGroup>; 135 | if (Groups <> nil) and (Groups.Count > 0) then 136 | begin 137 | try 138 | for Group in Groups do 139 | begin 140 | meInfo.Lines.Add(Format('%s / Allowed: %s',[Group.Name,Group.AllowNewUsers.ToString])); 141 | end; 142 | finally 143 | Groups.Free; 144 | end 145 | end 146 | else 147 | begin 148 | meInfo.Lines.Add('No results found!'); 149 | Exit; 150 | end; 151 | end; 152 | 153 | 154 | procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); 155 | begin 156 | RestFunc := nil; 157 | RestClient.Free; 158 | end; 159 | 160 | procedure TMainForm.FormCreate(Sender: TObject); 161 | begin 162 | RestClient := TORMRestClient.Create; 163 | RestClient.Host := '127.0.0.1'; 164 | RestClient.Port := 8099; 165 | RestClient.DataBase.IncludedClasses := [TAUser,TAGroup]; 166 | RestClient.Login.UserName := 'Admin'; 167 | RestClient.Login.UserPass := 'exilon'; 168 | RestClient.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 169 | RestClient.HTTPOptions.AuthMode := TAuthMode.amDefault; 170 | RestClient.Service.MethodInterface := IServiceMethods; 171 | RestClient.Service.InstanceImplementation := sicShared; 172 | RestClient.Service.Enabled := True; 173 | end; 174 | 175 | end. 176 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ClientMain.pas: -------------------------------------------------------------------------------- 1 | unit ClientMain; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, 8 | mORMot, 9 | SynCommons, 10 | Quick.ORM.Engine, 11 | Quick.ORM.RestClient, 12 | ORMDemo.Model, //unit contains Models for Demo 13 | Vcl.StdCtrls, 14 | System.Generics.Collections, 15 | ORMDemo.Interf; //unit contains interface for rest methods 16 | 17 | type 18 | TMainForm = class(TForm) 19 | btnConnect: TButton; 20 | meInfo: TMemo; 21 | btnGetUsers: TButton; 22 | btnGetGroups: TButton; 23 | btnFuncSum: TButton; 24 | btnFuncRandom: TButton; 25 | btnFuncMult: TButton; 26 | edVal1: TEdit; 27 | edVal2: TEdit; 28 | procedure FormCreate(Sender: TObject); 29 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 30 | procedure btnConnectClick(Sender: TObject); 31 | procedure btnGetUsersClick(Sender: TObject); 32 | procedure GetUsers; 33 | procedure GetGroups; 34 | procedure btnGetGroupsClick(Sender: TObject); 35 | procedure btnFuncSumClick(Sender: TObject); 36 | procedure btnFuncMultClick(Sender: TObject); 37 | procedure btnFuncRandomClick(Sender: TObject); 38 | private 39 | { Private declarations } 40 | public 41 | { Public declarations } 42 | end; 43 | 44 | var 45 | MainForm: TMainForm; 46 | RestClient : TORMRestClient; 47 | RestFunc : IServiceMethods; 48 | 49 | implementation 50 | 51 | {$R *.dfm} 52 | 53 | procedure TMainForm.btnConnectClick(Sender: TObject); 54 | var 55 | done : Boolean; 56 | begin 57 | if RestClient.HTTPOptions.AuthMode = amNoAuthentication then done := RestClient.Connect 58 | else done := RestClient.LoginPrompt(True); 59 | //done := RestClient.Connect(edHost.Text,StrToInt(edPort.Text)); 60 | if done then meInfo.Lines.Add('Connected to RestServer!') 61 | else 62 | begin 63 | meInfo.Lines.Add('Can''t connect to Restserver!'); 64 | Exit; 65 | end; 66 | btnGetUsers.Enabled := done; 67 | btnGetGroups.Enabled := done; 68 | btnFuncSum.Enabled := done; 69 | btnFuncMult.Enabled := done; 70 | btnFuncRandom.Enabled := done; 71 | 72 | //gets Interface-Method service 73 | if RestClient.Service.Enabled then RestClient.Service.SetRestMethod(RestFunc); 74 | 75 | //show apps actions access security 76 | if RestClient.ActionAllowed('Home.Open') then meInfo.Lines.Add('Allowed "Home.Open"') 77 | else meInfo.Lines.Add('Denied "Home.Open"'); 78 | 79 | if RestClient.ActionAllowed('Users.List') then meInfo.Lines.Add('Allowed "Users.List"') 80 | else meInfo.Lines.Add('Denied "Users.List"'); 81 | end; 82 | 83 | procedure TMainForm.btnFuncMultClick(Sender: TObject); 84 | begin 85 | meInfo.Lines.Add(FloatToStr(RestFunc.Mult(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 86 | end; 87 | 88 | procedure TMainForm.btnFuncRandomClick(Sender: TObject); 89 | begin 90 | meInfo.Lines.Add(IntToStr(RestFunc.RandomNumber)); 91 | end; 92 | 93 | procedure TMainForm.btnFuncSumClick(Sender: TObject); 94 | begin 95 | meInfo.Lines.Add(FloatToStr(RestFunc.Sum(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 96 | end; 97 | 98 | procedure TMainForm.btnGetGroupsClick(Sender: TObject); 99 | begin 100 | GetGroups; 101 | end; 102 | 103 | procedure TMainForm.btnGetUsersClick(Sender: TObject); 104 | begin 105 | if RestClient.ActionAllowed('Users.List') then GetUsers 106 | else ShowMessage('Action not allowed!'); 107 | end; 108 | 109 | procedure TMainForm.GetUsers; 110 | var 111 | User : TAUser; 112 | begin 113 | User := TAUser.CreateAndFillPrepare(RestClient.ORM,'',[]); 114 | try 115 | if User = nil then 116 | begin 117 | meInfo.Lines.Add('No results found!'); 118 | Exit; 119 | end; 120 | while User.FillOne do 121 | begin 122 | meInfo.Lines.Add(Format('%s / %d year(s) / LastLogin: %s',[User.Name,User.Age,DateTimeToStr(User.Login.LastLogin)])); 123 | end; 124 | finally 125 | User.Free; 126 | end; 127 | end; 128 | 129 | procedure TMainForm.GetGroups; 130 | var 131 | Group : TAGroup; 132 | Groups : TObjectList<TAGroup>; 133 | begin 134 | Groups := RestClient.ORM.RetrieveList<TAGroup>; 135 | if (Groups <> nil) and (Groups.Count > 0) then 136 | begin 137 | try 138 | for Group in Groups do 139 | begin 140 | meInfo.Lines.Add(Format('%s / Allowed: %s',[Group.Name,Group.AllowNewUsers.ToString])); 141 | end; 142 | finally 143 | Groups.Free; 144 | end 145 | end 146 | else 147 | begin 148 | meInfo.Lines.Add('No results found!'); 149 | Exit; 150 | end; 151 | end; 152 | 153 | 154 | procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); 155 | begin 156 | RestFunc := nil; 157 | RestClient.Free; 158 | end; 159 | 160 | procedure TMainForm.FormCreate(Sender: TObject); 161 | begin 162 | RestClient := TORMRestClient.Create; 163 | RestClient.Host := '127.0.0.1'; 164 | RestClient.Port := 8099; 165 | RestClient.DataBase.IncludedClasses := [TAUser,TAGroup]; 166 | RestClient.Login.UserName := 'Admin'; 167 | RestClient.Login.UserPass := 'exilon'; 168 | RestClient.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 169 | RestClient.HTTPOptions.AuthMode := TAuthMode.amDefault; 170 | RestClient.Service.MethodInterface := IServiceMethods; 171 | RestClient.Service.InstanceImplementation := sicShared; 172 | RestClient.Service.Enabled := True; 173 | end; 174 | 175 | end. 176 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientMain.pas: -------------------------------------------------------------------------------- 1 | unit ClientMain; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, 8 | mORMot, 9 | SynCommons, 10 | Quick.ORM.Engine, 11 | Quick.ORM.RestClient, 12 | ORMDemo.Model, //unit contains Models for Demo 13 | Vcl.StdCtrls, 14 | System.Generics.Collections, 15 | ORMDemo.Interf; //unit contains interface for rest methods 16 | 17 | type 18 | TMainForm = class(TForm) 19 | btnConnect: TButton; 20 | meInfo: TMemo; 21 | btnGetUsers: TButton; 22 | btnGetGroups: TButton; 23 | btnFuncSum: TButton; 24 | btnFuncRandom: TButton; 25 | btnFuncMult: TButton; 26 | edVal1: TEdit; 27 | edVal2: TEdit; 28 | procedure FormCreate(Sender: TObject); 29 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 30 | procedure btnConnectClick(Sender: TObject); 31 | procedure btnGetUsersClick(Sender: TObject); 32 | procedure GetUsers; 33 | procedure GetGroups; 34 | procedure btnGetGroupsClick(Sender: TObject); 35 | procedure btnFuncSumClick(Sender: TObject); 36 | procedure btnFuncMultClick(Sender: TObject); 37 | procedure btnFuncRandomClick(Sender: TObject); 38 | private 39 | { Private declarations } 40 | public 41 | { Public declarations } 42 | end; 43 | 44 | var 45 | MainForm: TMainForm; 46 | RestClient : TORMRestClient; 47 | RestFunc : IServiceMethods; 48 | 49 | implementation 50 | 51 | {$R *.dfm} 52 | 53 | procedure TMainForm.btnConnectClick(Sender: TObject); 54 | var 55 | done : Boolean; 56 | begin 57 | if RestClient.HTTPOptions.AuthMode = amNoAuthentication then done := RestClient.Connect 58 | else done := RestClient.LoginPrompt(True); 59 | //done := RestClient.Connect(edHost.Text,StrToInt(edPort.Text)); 60 | if done then meInfo.Lines.Add('Connected to RestServer!') 61 | else 62 | begin 63 | meInfo.Lines.Add('Can''t connect to Restserver!'); 64 | Exit; 65 | end; 66 | btnGetUsers.Enabled := done; 67 | btnGetGroups.Enabled := done; 68 | btnFuncSum.Enabled := done; 69 | btnFuncMult.Enabled := done; 70 | btnFuncRandom.Enabled := done; 71 | 72 | //gets Interface-Method service 73 | if RestClient.Service.Enabled then RestClient.Service.SetRestMethod(RestFunc); 74 | 75 | //show apps actions access security 76 | if RestClient.ActionAllowed('Home.Open') then meInfo.Lines.Add('Allowed "Home.Open"') 77 | else meInfo.Lines.Add('Denied "Home.Open"'); 78 | 79 | if RestClient.ActionAllowed('Users.List') then meInfo.Lines.Add('Allowed "Users.List"') 80 | else meInfo.Lines.Add('Denied "Users.List"'); 81 | end; 82 | 83 | procedure TMainForm.btnFuncMultClick(Sender: TObject); 84 | begin 85 | meInfo.Lines.Add(FloatToStr(RestFunc.Mult(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 86 | end; 87 | 88 | procedure TMainForm.btnFuncRandomClick(Sender: TObject); 89 | begin 90 | meInfo.Lines.Add(IntToStr(RestFunc.RandomNumber)); 91 | end; 92 | 93 | procedure TMainForm.btnFuncSumClick(Sender: TObject); 94 | begin 95 | meInfo.Lines.Add(FloatToStr(RestFunc.Sum(StrToFloat(edVal1.Text),StrToFloat(edVal2.Text)))); 96 | end; 97 | 98 | procedure TMainForm.btnGetGroupsClick(Sender: TObject); 99 | begin 100 | GetGroups; 101 | end; 102 | 103 | procedure TMainForm.btnGetUsersClick(Sender: TObject); 104 | begin 105 | if RestClient.ActionAllowed('Users.List') then GetUsers 106 | else ShowMessage('Action not allowed!'); 107 | end; 108 | 109 | procedure TMainForm.GetUsers; 110 | var 111 | User : TAUser; 112 | begin 113 | User := TAUser.CreateAndFillPrepare(RestClient.ORM,'',[]); 114 | try 115 | if User = nil then 116 | begin 117 | meInfo.Lines.Add('No results found!'); 118 | Exit; 119 | end; 120 | while User.FillOne do 121 | begin 122 | meInfo.Lines.Add(Format('%s / %d year(s) / LastLogin: %s',[User.Name,User.Age,DateTimeToStr(User.Login.LastLogin)])); 123 | end; 124 | finally 125 | User.Free; 126 | end; 127 | end; 128 | 129 | procedure TMainForm.GetGroups; 130 | var 131 | Group : TAGroup; 132 | Groups : TObjectList<TAGroup>; 133 | begin 134 | Groups := RestClient.ORM.RetrieveList<TAGroup>; 135 | if (Groups <> nil) and (Groups.Count > 0) then 136 | begin 137 | try 138 | for Group in Groups do 139 | begin 140 | meInfo.Lines.Add(Format('%s / Allowed: %s',[Group.Name,Group.AllowNewUsers.ToString])); 141 | end; 142 | finally 143 | Groups.Free; 144 | end 145 | end 146 | else 147 | begin 148 | meInfo.Lines.Add('No results found!'); 149 | Exit; 150 | end; 151 | end; 152 | 153 | 154 | procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); 155 | begin 156 | RestFunc := nil; 157 | RestClient.Free; 158 | end; 159 | 160 | procedure TMainForm.FormCreate(Sender: TObject); 161 | var 162 | listbox : TListBox; 163 | begin 164 | RestClient := TORMRestClient.Create; 165 | RestClient.Host := '127.0.0.1'; 166 | RestClient.Port := 8099; 167 | RestClient.DataBase.IncludedClasses := [TAUser,TAGroup]; 168 | RestClient.Login.UserName := 'Admin'; 169 | RestClient.Login.UserPass := 'exilon'; 170 | RestClient.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 171 | RestClient.HTTPOptions.AuthMode := TAuthMode.amDefault; 172 | RestClient.Service.MethodInterface := IServiceMethods; 173 | RestClient.Service.InstanceImplementation := sicShared; 174 | RestClient.Service.Enabled := True; 175 | end; 176 | 177 | end. 178 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | **QuickORM** 3 | ---------- 4 | QuickORM is a simple RestServer and Restclient based on mORMot framework. Provides a fast implementation of client-server applications in few minutes. 5 | 6 | *NEW: Custom external database compatibility (Thanks to @juanter) 7 | *NEW: Easy external DB Mapping Fields 8 | *NEW: Client with basic android compatibility. 9 | *NEW: Delphinus support 10 | 11 | ---------- 12 | This framework uses next libraries: 13 | 14 | Synopse mORMot framework. Copyright (C) 2017 Arnaud Bouchez (Synopse Informatique - https://synopse.info) 15 | https://synopse/mORMot 16 | 17 | QuickLib. Copyright (C) 2016-2018 Kike Pérez 18 | https://github.com/exilon/QuickLib 19 | 20 | ## Server classes 21 | There are 3 server flavors: 22 | 23 | **TORMRestDB:** Rest ORM access to database. For single applications without client connection needs. 24 | **TORMRestDBFull:** It's a client and embeded server. Client comunicates to server that provides cache benefits. For single application without client connection needs. 25 | **TORMRestServer:** Rest ORM with http server embeded, allowing clients connections to ORM and services published. 26 | ## Client classes 27 | **TORMRestClient:** Client to connect to ORMRestServer and acces to database or published services. 28 | ## Documentation 29 | ### TORMRestServer: 30 | Connect to your SQLite, InMemory or External database providing ORM access and publish rest services with http server or websockets. Define security, ip and apikey restrictions with easy. 31 | You can provide a binding port in command line to allow reverse proxies like ARR (with httpplatform module installed) or Azure Webservices integration. 32 | - **CustomORMServerClass:** Define a inherited class to declare your http published methods. 33 | - **ConfigFile:** Defines configfile options. If enabled, a json config file will created with binding options, ip restrictions and api keys. 34 | - **Enabled:** If enabled uses config file and overrides in code options defined. 35 | - **RestartServerIfChanged:** Restarts server applying new settings if config file is modified (like web.config in IIS). 36 | - **ORMRestServer.DataBase:** Defines connection to database and options. 37 | - **DBType:** Sqlite or MSSQL (more soon) 38 | - **DBFileName:** Path to sqlite database. 39 | - **aRootURI:** First path of URL /root/ by default. 40 | - **DBIndexes:** Specifies indexes your database will create if not exists. 41 | - **FullMemoryMode:** Database creates in memory, no file needed. 42 | - **LockMode:** Normal or exclusive acces to speedup operations. 43 | - **IncludedClasses:** SQLRecord classes used in your database. 44 | - **SQLConnection:** Properties to connect to external database (host, user, password,...). 45 | - **DBMappingFiels:** Can map your internal class fields with external database fields (example: can map your SQLRecord ID with external IdCustom) 46 | 47 | - **ORMRestServer.HTTPOptions:** HTTP Server configuration. 48 | - **Binding:** Defines listen ip and port for http server. 49 | - **Protocol:** Defines protocol as HTTPSocket, Websockets or HTTP.Sys 50 | - **AuthMode:** HTTP Authentification mode. 51 | - **IPRestriction:** Defines restricted ip and exclusions. 52 | 53 | - **ORMRestServer.Service:** Services configuration. 54 | - **ServiceInterface:** Interface with contract definition for your services. 55 | - **MethodClass:** Class with implementation of services. 56 | - **Enabled**: Defines if services are published through your http server. 57 | 58 | 59 | - **ORMRestServer.Security:** Security related options, user, groups and tables permissions. 60 | - **DefaultAdminPassword:** Defines default password when database is first created. 61 | - **ServiceAuthorizationPolicy:** Defines if all your services are accesible to all users or not. 62 | - **PublicServices:** Defines which services interface-based are public (No authentification needed). 63 | - **PublicMethods:** Defines which methods are public (No authentification needed). 64 | - **Users:** Create, modify and remove users, passwords and group membership. 65 | - **Groups:** Create, modify and remove groups. Manage services and tables permissions. All permissions are stored on database. 66 | 67 | ## Examples 68 | ```delphi 69 | 70 | //Create a new user and group and allow services access 71 | RestServer.Security.Groups.Add('Operators').CopySecurityFrom('User').GlobalSecurity.AllowServices := spAllow; 72 | RestServer.Security.Users.Add('mike','5555').Group('Supervisor'); 73 | //Change user "mike" password 74 | RestServer.Security.Users['mike'].Password := '1234'; 75 | 76 | //Allow Guest group access to "Sum" service only 77 | RestServer.Security.Groups['Guest'].GlobalSecurity.AllowAllServices := spDeny; 78 | RestServer.Security.Groups['Guest'].Service('Sum').Allow; 79 | 80 | //Deny Operators group access to table "Reports" 81 | RestServer.Security.Groups['Operators'].Table('Reports').DenyAll; 82 | 83 | //Gives readonly permissions to Operators group 84 | RestServer.Security.Groups['Operators'].Table('Reports').ReadOnly 85 | 86 | //Allow "Operators" group Read and Create access to table "Reports" 87 | with RestServer.Security.Groups['Operators'].Table('Reports') do 88 | begin 89 | CanRead := True; 90 | CanCreate := True; 91 | CanUpdate := False; 92 | CanDelete := False; 93 | end; 94 | 95 | //Create a unique index 96 | RestServer.DBIndexes.Add(TMyClass,'FieldName',True); 97 | 98 | //Create a multiindex 99 | ORMRestServer.DBIndexes.Add(TMyClass,['FieldName1','FieldName2']); 100 | 101 | //Define public methods 102 | RestServer.Security.PublicMethods := ['Method1','Method2']; 103 | 104 | //Mapping fields 105 | RestServer.Database.DBMappingFiels.Map(TMySQLRecord,'ID','IDCustom'); 106 | ``` 107 | 108 | >Do you want to learn delphi or improve your skills? [learndelphi.org](https://learndelphi.org) -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/delphi/ORMRestServer.dpr: -------------------------------------------------------------------------------- 1 | program ORMRestServer; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$INCLUDE synopse.inc} 6 | {$R *.res} 7 | 8 | uses 9 | 10 | System.SysUtils, 11 | System.DateUtils, 12 | mORMot, 13 | SynCommons, 14 | Quick.Commons, 15 | Quick.Log, 16 | Quick.Console, 17 | Quick.ORM.Engine, 18 | Quick.ORM.RestServer, 19 | Quick.ORM.Security, 20 | Quick.ORM.DataBase, 21 | ORMDemo.Model, 22 | ORMDemo.RestMethods, 23 | ORMDemo.Interf, 24 | ORMDemo.CustomServer; 25 | 26 | //contains interface for rest service 27 | 28 | var 29 | RestServer : TORMRestServer; 30 | i : Integer; 31 | User : TAUser; 32 | Group : TAGroup; 33 | Login : TLogin; 34 | randomname : string; 35 | 36 | begin 37 | try 38 | Log := TQuickLog.Create; 39 | Log.SetLog('.\ServerHTTPSocket.log',False,20); 40 | Log.ShowEventType := True; 41 | Log.ShowHeaderInfo := True; 42 | Console.LogVerbose := LOG_DEBUG; 43 | Console.Log := Log; 44 | RestServer := TORMRestServer.Create(False); 45 | RestServer.CustomORMServerClass := TORMServer; 46 | RestServer.DataBase.DBType := dtSQLite; 47 | RestServer.DataBase.DBFileName := '.\ORMTest.db3'; 48 | RestServer.DataBase.IncludedClasses := [TAUser,TAGroup]; 49 | RestServer.HTTPOptions.Binding.IP := '127.0.0.1'; 50 | RestServer.HTTPOptions.Binding.Port := 8099; 51 | RestServer.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 52 | RestServer.HTTPOptions.AuthMode := TAuthMode.amDefault; 53 | RestServer.ServerLog := LOG_ONLYERRORS; 54 | RestServer.HTTPOptions.IPRestriction.DefaultSecurityRule := TSecurityAccess.saAllowed; 55 | //RestServer.HTTPOptions.IPRestriction.ExcludedIPFromDefaultRule.Add('127.0.0.1'); 56 | RestServer.Service.MethodClass := TServiceMethods; 57 | RestServer.Service.MethodInterface := IServiceMethods; 58 | RestServer.Service.InstanceImplementation := sicShared; 59 | RestServer.Service.Enabled := True; 60 | RestServer.Security.DefaultAdminPassword := 'exilon'; 61 | RestServer.Security.ServiceAuthorizationPolicy := TServiceAuthorizationPolicy.saDenyAll; 62 | RestServer.Security.PublicMethods := ['Test','AppActions']; //method-based public allowed 63 | RestServer.Security.PublicServices := True; //interface-based public allowed 64 | RestServer.ConfigFile.Enabled := True; //config file overwrites in-code config 65 | RestServer.Connect; 66 | coutFmt('DB service listening on port %d',[RestServer.HTTPOptions.Binding.Port],etInfo); 67 | RestServer.Security.Users.Add('pepe','1234').DisplayName := 'Pepelu'; 68 | RestServer.Security.Users.Add('joan','5555').Group('Supervisor'); 69 | RestServer.Security.Users.Add('restricted').Password('1234').Group('Guest'); 70 | RestServer.Security.Users.Add('other').Password('1234').Group('Operator'); 71 | RestServer.Security.Groups.Add('Admin2').CopySecurityFrom('User').GlobalSecurity.AllowServices := spAllow; 72 | RestServer.Security.Groups.Add('Operator').CopySecurityFrom('User'); 73 | RestServer.Security.Users['pepe'].Group('Admin'); 74 | RestServer.Security.Groups['Admin'].GlobalSecurity.AllowAllServices := spAllow; 75 | RestServer.Security.Groups['Supervisor'].AllowedServices := ['Sum','Mult']; 76 | RestServer.Security.Groups['Supervisor'].GlobalSecurity.AllowAllTables := spDeny; 77 | RestServer.Security.Groups['Supervisor'].Table('AUser').AllowAll; 78 | RestServer.Security.Groups['Admin'].Service('RandomNumber').Deny; 79 | RestServer.Security.Groups['Operator'].Service('Sum').Allow; 80 | RestServer.Security.Groups['Guest'].GlobalSecurity.AllowServices := spAllow; 81 | RestServer.Security.Groups['Guest'].Service('Sum').Allow; 82 | RestServer.Security.Groups['Operator'].Table('AUser').DenyAll; 83 | RestServer.Security.Groups['Operator'].Table('AGroup').AllowAll.CanDelete := False; 84 | RestServer.Security.Groups['Guest'].Table('AUser').DenyAll; 85 | with RestServer.Security.Groups['Guest'].Table('AGroup') do 86 | begin 87 | CanRead := True; 88 | CanCreate := True; 89 | CanUpdate := False; 90 | CanDelete := False; 91 | end; 92 | RestServer.Security.Groups['User'].Table('AGroup').ReadOnly; 93 | 94 | RestServer.Security.Groups['Admin'].AppAction('Home.Open').Allow; 95 | RestServer.Security.Groups['Admin'].AppAction('Users.List').Allow; 96 | 97 | RestServer.Security.Groups['Operator'].AppAction('Home.Open').Allow; 98 | RestServer.Security.Groups['Operator'].AppAction('Users.List').Deny; 99 | 100 | RestServer.Security.ApplySecurity; 101 | 102 | //access from browser 103 | //http://127.0.0.1:8099/root/ServiceMethods.Sum?[2,2] 104 | 105 | //creates 10 dummy users 106 | for i := 1 to 10 do 107 | begin 108 | User := TAUser.Create; 109 | try 110 | randomname := IntToStr(Random(10000)); 111 | User.Name := 'User' + randomname; 112 | User.Surname := 'Surname' + randomname; 113 | User.Age := Random(50)+20; 114 | User.Login.Username := 'user' + randomname; 115 | User.Login.UserPass := TSQLAuthUser.ComputeHashedPassword(IntToStr(Random(9999)+1000)); 116 | User.Login.LastLogin := IncDay(Now,Random(60)*-1); 117 | RestServer.ORM.AddOrUpdate(User); 118 | finally 119 | User.Free; 120 | end; 121 | end; 122 | for i := 1 to 10 do 123 | begin 124 | Group := TAGroup.Create; 125 | try 126 | Group.Name := 'Group' + IntToStr(Random(10000)); 127 | Group.AllowNewUsers := Boolean(Random(1)); 128 | RestServer.ORM.AddOrUpdate(Group); 129 | finally 130 | Group.Free; 131 | end; 132 | end; 133 | ConsoleWaitForEnterKey; 134 | RestServer.Free; 135 | except 136 | on E: Exception do 137 | Writeln(E.ClassName, ': ', E.Message); 138 | end; 139 | end. 140 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ORMRestServer.pas: -------------------------------------------------------------------------------- 1 | program ORMRestServer; 2 | 3 | {$mode delphi} 4 | 5 | {$INCLUDE synopse.inc} 6 | 7 | uses 8 | SysUtils, 9 | DateUtils, 10 | SynCommons, 11 | Quick.Commons, 12 | Quick.Log, 13 | Quick.Console, 14 | Quick.ORM.Engine, 15 | Quick.ORM.RestServer, 16 | Quick.ORM.Security, 17 | Quick.ORM.DataBase, 18 | ORMDemo.Model, 19 | ORMDemo.RestMethods, 20 | ORMDemo.Interf, 21 | mORMot, 22 | ORMDemo.CustomServer; 23 | 24 | //contains interface for rest service 25 | 26 | var 27 | RestServer : TORMRestServer; 28 | i : Integer; 29 | User : TAUser; 30 | Group : TAGroup; 31 | Login : TLogin; 32 | randomname : string; 33 | 34 | begin 35 | try 36 | Log := TQuickLog.Create; 37 | Log.SetLog('.\ServerHTTPSocket.log',False,20); 38 | Log.ShowEventType := True; 39 | Log.ShowHeaderInfo := True; 40 | Console.LogVerbose := LOG_DEBUG; 41 | Console.Log := Log; 42 | RestServer := TORMRestServer.Create(False); 43 | RestServer.CustomORMServerClass := TORMServer; 44 | RestServer.DataBase.DBType := dtSQLite; 45 | RestServer.DataBase.DBFileName := '.\ORMTest.db3'; 46 | RestServer.DataBase.IncludedClasses := [TAUser,TAGroup]; 47 | RestServer.HTTPOptions.Binding.IP := '127.0.0.1'; 48 | RestServer.HTTPOptions.Binding.Port := 8099; 49 | RestServer.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 50 | RestServer.HTTPOptions.AuthMode := TAuthMode.amDefault; 51 | RestServer.ServerLog := LOG_ONLYERRORS; 52 | RestServer.HTTPOptions.IPRestriction.DefaultSecurityRule := TSecurityAccess.saAllowed; 53 | RestServer.HTTPOptions.IPRestriction.ExcludedIPFromDefaultRule.Add('127.0.0.1'); 54 | RestServer.Service.MethodClass := TServiceMethods; 55 | RestServer.Service.MethodInterface := IServiceMethods; 56 | RestServer.Service.InstanceImplementation := TServiceInstanceImplementation.sicShared; 57 | RestServer.Service.Enabled := True; 58 | RestServer.Security.DefaultAdminPassword := 'exilon'; 59 | RestServer.Security.ServiceAuthorizationPolicy := TServiceAuthorizationPolicy.saDenyAll; 60 | RestServer.Security.PublicMethods := ['Test','AppActions']; //method-based public allowed 61 | RestServer.Security.PublicServices := True; //interface-based public allowed 62 | RestServer.ConfigFile.Enabled := True; //config file overwrites in-code config 63 | RestServer.Connect; 64 | coutFmt('DB service listening on port %d',[RestServer.HTTPOptions.Binding.Port],etInfo); 65 | RestServer.Security.Users.Add('pepe','1234').DisplayName := 'Pepelu'; 66 | RestServer.Security.Users.Add('joan','5555').Group('Supervisor'); 67 | RestServer.Security.Users.Add('restricted').Password('1234').Group('Guest'); 68 | RestServer.Security.Users.Add('other').Password('1234').Group('Operator'); 69 | RestServer.Security.Groups.Add('Admin2').CopySecurityFrom('User').GlobalSecurity.AllowServices := spAllow; 70 | RestServer.Security.Groups.Add('Operator').CopySecurityFrom('User'); 71 | RestServer.Security.Users['pepe'].Group('Admin'); 72 | RestServer.Security.Groups['Admin'].GlobalSecurity.AllowAllServices := spAllow; 73 | RestServer.Security.Groups['Supervisor'].AllowedServices := ['Sum','Mult']; 74 | RestServer.Security.Groups['Supervisor'].GlobalSecurity.AllowAllTables := spDeny; 75 | RestServer.Security.Groups['Supervisor'].Table('AUser').AllowAll; 76 | RestServer.Security.Groups['Admin'].Service('RandomNumber').Deny; 77 | RestServer.Security.Groups['Operator'].Service('Sum').Allow; 78 | RestServer.Security.Groups['Guest'].GlobalSecurity.AllowServices := spAllow; 79 | RestServer.Security.Groups['Guest'].Service('Sum').Allow; 80 | RestServer.Security.Groups['Operator'].Table('AUser').DenyAll; 81 | RestServer.Security.Groups['Operator'].Table('AGroup').AllowAll.CanDelete := False; 82 | RestServer.Security.Groups['Guest'].Table('AUser').DenyAll; 83 | with RestServer.Security.Groups['Guest'].Table('AGroup') do 84 | begin 85 | CanRead := True; 86 | CanCreate := True; 87 | CanUpdate := False; 88 | CanDelete := False; 89 | end; 90 | RestServer.Security.Groups['User'].Table('AGroup').ReadOnly; 91 | 92 | RestServer.Security.Groups['Admin'].AppAction('Home.Open').Allow; 93 | RestServer.Security.Groups['Admin'].AppAction('Users.List').Allow; 94 | 95 | RestServer.Security.Groups['Operator'].AppAction('Home.Open').Allow; 96 | RestServer.Security.Groups['Operator'].AppAction('Users.List').Deny; 97 | 98 | RestServer.Security.ApplySecurity; 99 | 100 | //access from browser 101 | //http://127.0.0.1:8099/root/ServiceMethods.Sum?[2,2] 102 | 103 | //creates 10 dummy users 104 | for i := 1 to 10 do 105 | begin 106 | User := TAUser.Create; 107 | try 108 | randomname := IntToStr(Random(10000)); 109 | User.Name := 'User' + randomname; 110 | User.Surname := 'Surname' + randomname; 111 | User.Age := Random(50)+20; 112 | Login.Username := 'user' + randomname; 113 | Login.UserPass := TSQLAuthUser.ComputeHashedPassword(IntToStr(Random(9999)+1000)); 114 | Login.LastLogin := IncDay(Now,Random(60)*-1); 115 | User.Login := Login; 116 | RestServer.ORM.AddOrUpdate(User); 117 | finally 118 | User.Free; 119 | end; 120 | end; 121 | for i := 1 to 10 do 122 | begin 123 | Group := TAGroup.Create; 124 | try 125 | Group.Name := 'Group' + IntToStr(Random(10000)); 126 | Group.AllowNewUsers := Boolean(Random(1)); 127 | RestServer.ORM.AddOrUpdate(Group); 128 | finally 129 | Group.Free; 130 | end; 131 | end; 132 | ConsoleWaitForEnterKey; 133 | RestServer.Free; 134 | except 135 | on E: Exception do 136 | Writeln(E.ClassName, ': ', E.Message); 137 | end; 138 | end. 139 | -------------------------------------------------------------------------------- /Quick.ORM.RestDB.pas: -------------------------------------------------------------------------------- 1 | { *************************************************************************** 2 | 3 | Copyright (c) 2016-2019 Kike Pérez 4 | 5 | Unit : Quick.ORM.RestDB 6 | Description : Rest ORM access SQLite db only 7 | Author : Kike Pérez 8 | Version : 1.6 9 | Created : 02/06/2017 10 | Modified : 08/05/2019 11 | 12 | This file is part of QuickORM: https://github.com/exilon/QuickORM 13 | 14 | Uses Synopse mORMot framework. Copyright (C) 2017 Arnaud Bouchez 15 | Synopse Informatique - https://synopse.info 16 | 17 | *************************************************************************** 18 | 19 | Licensed under the Apache License, Version 2.0 (the "License"); 20 | you may not use this file except in compliance with the License. 21 | You may obtain a copy of the License at 22 | 23 | http://www.apache.org/licenses/LICENSE-2.0 24 | 25 | Unless required by applicable law or agreed to in writing, software 26 | distributed under the License is distributed on an "AS IS" BASIS, 27 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 28 | See the License for the specific language governing permissions and 29 | limitations under the License. 30 | 31 | *************************************************************************** } 32 | 33 | unit Quick.ORM.RestDB; 34 | 35 | {$i QuickORM.inc} 36 | {$INCLUDE synopse.inc} 37 | 38 | interface 39 | 40 | uses 41 | Classes, 42 | SysUtils, 43 | {$IFDEF NEXTGEN} 44 | Not compatible with firemonkey android/ios 45 | {$ENDIF} 46 | SynCommons, 47 | SynDBODBC, 48 | mORMot, 49 | mORMotDB, 50 | mORMotSQLite3, 51 | SynSQLite3, 52 | SynSQLite3Static, 53 | Quick.ORM.Engine, 54 | Quick.ORM.DataBase, 55 | Quick.ORM.Security, 56 | Quick.ORM.Server.Config; 57 | 58 | type 59 | 60 | TIDDynArray = mORMot.TIDDynArray; 61 | 62 | //Client with direct SQLite DB access 63 | TORMRestDB = class 64 | private 65 | fDataBase : TORMDataBase; 66 | fSecurity : TORMSecurity; 67 | fConfigFile : TORMRestDBConfig; 68 | fUseConfigFile : Boolean; 69 | public 70 | ORM : TSQLRestClientDB; 71 | property DataBase : TORMDataBase read fDataBase write fDataBase; 72 | property Security : TORMSecurity read fSecurity write fSecurity; 73 | constructor Create; 74 | destructor Destroy; override; 75 | function Connect : Boolean; overload; 76 | function Connect(DoCustomDB : TProc) : Boolean; overload; 77 | end; 78 | 79 | 80 | implementation 81 | 82 | {TORMRestDB Class} 83 | 84 | constructor TORMRestDB.Create; 85 | begin 86 | inherited; 87 | fDataBase := TORMDataBase.Create; 88 | fSecurity := TORMSecurity.Create; 89 | end; 90 | 91 | destructor TORMRestDB.Destroy; 92 | begin 93 | if Assigned(ORM) then ORM.Free; 94 | if Assigned(fDataBase) then fDataBase.Free; 95 | if Assigned(fSecurity) then fSecurity.Free; 96 | inherited; 97 | end; 98 | 99 | function TORMRestDB.Connect : Boolean; 100 | begin 101 | Result := Connect(nil); 102 | end; 103 | 104 | function TORMRestDB.Connect(DoCustomDB : TProc) : Boolean; 105 | var 106 | DBIndex : TDBIndex; 107 | begin 108 | Result := False; 109 | 110 | if Assigned(fDataBase.Model) then fDataBase.Model.Free; 111 | fDataBase.Model := TSQLModel.Create(fDataBase.IncludedClasses, fDataBase.aRootURI); 112 | if fDataBase.FullMemoryMode then 113 | begin 114 | ORM := TSQLRestClientDB.Create(fDataBase.Model,nil,SQLITE_MEMORY_DATABASE_NAME,TSQLRestServerDB,fSecurity.Enabled,''); 115 | end 116 | else 117 | begin 118 | if not Assigned(DoCustomDb) then 119 | begin 120 | case fDataBase.DBType of 121 | dtSQLite : ORM := TSQLRestClientDB.Create(fDataBase.Model, nil, fDataBase.DBFileName, TSQLRestServerDB); 122 | dtMSSQL : 123 | begin {SQL Server Native Client 10.0} {Microsoft OLE DB Provider for SQL Server} 124 | //fDataBase.Model := TSQLModel.Create(fDataBase.IncludedClasses); 125 | fDataBase.SQLProperties := //TOleDBMSSQL2008ConnectionProperties.Create(fDataBase.SQLConnection.ServerName,fDataBase.SQLConnection.DataBase,fDataBase.SQLConnection.Username,fDataBase.SQLConnection.UserPass); 126 | //TODBCConnectionProperties.Create('','Driver={SQL Server Native Client 10.0} ;Database='+fDataBase.SQLConnection.DataBase+';'+ 127 | // 'Server='+fDataBase.SQLConnection.ServerName+';UID='+fDataBase.SQLConnection.Username+';Pwd='+fDataBase.SQLConnection.UserPass+';MARS_Connection=yes','',''); 128 | TODBCConnectionProperties.Create('',DataBase.SQLConnection.GetConnectionString,'',''); 129 | VirtualTableExternalRegisterAll(fDataBase.Model,fDataBase.SQLProperties); 130 | //fDataBase.Model.VirtualTableRegister(fDataBase.IncludedClasses[0],TSQLVirtualTableBinary); 131 | ORM := TSQLRestClientDB.Create(fDataBase.Model,nil,SQLITE_MEMORY_DATABASE_NAME,TSQLRestServerDB,fSecurity.Enabled,''); 132 | end; 133 | end; 134 | end 135 | else DoCustomDB; 136 | end; 137 | //exclusive mode speeds up sqlite performance, but db can't be accessible from outside processes 138 | if fDataBase.LockMode = TSQLiteLockMode.lmExclusive then ORM.Server.DB.LockingMode := TSQLLockingMode.lmExclusive 139 | else ORM.Server.DB.LockingMode := TSQLLockingMode.lmNormal; 140 | //creates tables if not exists 141 | ORM.Server.CreateMissingTables; 142 | //create indexes 143 | for DBIndex in DataBase.DBIndexes do 144 | begin 145 | if DBIndex.FieldNames.Count > 1 then ORM.Server.CreateSQLMultiIndex(DBIndex.SQLRecordClass,DBIndex.FieldNames,DBIndex.Unique) 146 | else ORM.Server.CreateSQLIndex(DBIndex.SQLRecordClass,DBIndex.FieldNames,DBIndex.Unique); 147 | end; 148 | //assigns ORM to security class 149 | fSecurity.SetORMServer(ORM); 150 | //checks if default security needs to apply 151 | fSecurity.SetDefaultSecurity; 152 | Result := True; 153 | end; 154 | 155 | end. 156 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ServerHTTPSocket.dpr: -------------------------------------------------------------------------------- 1 | program ServerHTTPSocket; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$INCLUDE synopse.inc} 6 | {$R *.res} 7 | 8 | uses 9 | System.SysUtils, 10 | System.DateUtils, 11 | mORMot, 12 | SynCommons, 13 | Quick.Commons, 14 | Quick.Log, 15 | Quick.Console, 16 | Quick.ORM.Engine, 17 | Quick.ORM.RestServer, 18 | Quick.ORM.Security, 19 | Quick.ORM.DataBase, 20 | ORMDemo.Model, 21 | ORMDemo.RestMethods, 22 | ORMDemo.Interf, 23 | ORMDemo.CustomServer; 24 | 25 | //contains interface for rest service 26 | 27 | var 28 | RestServer : TORMRestServer; 29 | i : Integer; 30 | User : TAUser; 31 | Group : TAGroup; 32 | Login : TLogin; 33 | randomname : string; 34 | 35 | begin 36 | try 37 | Log := TQuickLog.Create; 38 | Log.SetLog('.\ServerHTTPSocket.log',False,20); 39 | Log.ShowEventType := True; 40 | Log.ShowHeaderInfo := True; 41 | Console.LogVerbose := LOG_DEBUG; 42 | Console.Log := Log; 43 | RestServer := TORMRestServer.Create(False); 44 | RestServer.CustomORMServerClass := TORMServer; 45 | RestServer.DataBase.DBType := dtSQLite; 46 | RestServer.DataBase.DBFileName := '.\ORMTest.db3'; 47 | RestServer.DataBase.IncludedClasses := [TAUser,TAGroup]; 48 | RestServer.HTTPOptions.Binding.IP := '127.0.0.1'; 49 | RestServer.HTTPOptions.Binding.Port := 8099; 50 | RestServer.HTTPOptions.Protocol := TSrvProtocol.spWebSocketBidir_Binary; 51 | RestServer.HTTPOptions.AuthMode := TAuthMode.amDefault; 52 | RestServer.ServerLog := LOG_ONLYERRORS; 53 | RestServer.HTTPOptions.IPRestriction.DefaultSecurityRule := TSecurityAccess.saAllowed; 54 | RestServer.HTTPOptions.IPRestriction.ExcludedIPFromDefaultRule.Add('127.0.0.1'); 55 | RestServer.Service.MethodClass := TServiceMethods; 56 | RestServer.Service.MethodInterface := IServiceMethods; 57 | RestServer.Service.InstanceImplementation := sicShared; 58 | RestServer.Service.Enabled := True; 59 | RestServer.Security.DefaultAdminPassword := 'exilon'; 60 | RestServer.Security.ServiceAuthorizationPolicy := TServiceAuthorizationPolicy.saDenyAll; 61 | RestServer.Security.PublicMethods := ['Test','AppActions']; //method-based public allowed 62 | RestServer.Security.PublicServices := True; //interface-based public allowed 63 | RestServer.ConfigFile.Enabled := True; //config file overwrites in-code config 64 | RestServer.Connect; 65 | coutFmt('DB service listening on port %d',[RestServer.HTTPOptions.Binding.Port],etInfo); 66 | RestServer.Security.Users.Add('pepe','1234').DisplayName := 'Pepelu'; 67 | RestServer.Security.Users.Add('joan','5555').Group('Supervisor'); 68 | RestServer.Security.Users.Add('restricted').Password('1234').Group('Guest'); 69 | RestServer.Security.Users.Add('other').Password('1234').Group('Operator'); 70 | RestServer.Security.Groups.Add('Admin2').CopySecurityFrom('User').GlobalSecurity.AllowServices := spAllow; 71 | RestServer.Security.Groups.Add('Operator').CopySecurityFrom('User'); 72 | RestServer.Security.Users['pepe'].Group('Admin'); 73 | RestServer.Security.Groups['Admin'].GlobalSecurity.AllowAllServices := spAllow; 74 | RestServer.Security.Groups['Supervisor'].AllowedServices := ['Sum','Mult']; 75 | RestServer.Security.Groups['Supervisor'].GlobalSecurity.AllowAllTables := spDeny; 76 | RestServer.Security.Groups['Supervisor'].Table('AUser').AllowAll; 77 | RestServer.Security.Groups['Admin'].Service('RandomNumber').Deny; 78 | RestServer.Security.Groups['Operator'].Service('Sum').Allow; 79 | RestServer.Security.Groups['Guest'].GlobalSecurity.AllowServices := spAllow; 80 | RestServer.Security.Groups['Guest'].Service('Sum').Allow; 81 | RestServer.Security.Groups['Operator'].Table('AUser').DenyAll; 82 | RestServer.Security.Groups['Operator'].Table('AGroup').AllowAll.CanDelete := False; 83 | RestServer.Security.Groups['Guest'].Table('AUser').DenyAll; 84 | with RestServer.Security.Groups['Guest'].Table('AGroup') do 85 | begin 86 | CanRead := True; 87 | CanCreate := True; 88 | CanUpdate := False; 89 | CanDelete := False; 90 | end; 91 | RestServer.Security.Groups['User'].Table('AGroup').ReadOnly; 92 | 93 | RestServer.Security.Groups['Admin'].AppAction('Home.Open').Allow; 94 | RestServer.Security.Groups['Admin'].AppAction('Users.List').Allow; 95 | 96 | RestServer.Security.Groups['Operator'].AppAction('Home.Open').Allow; 97 | RestServer.Security.Groups['Operator'].AppAction('Users.List').Deny; 98 | 99 | RestServer.Security.ApplySecurity; 100 | 101 | //access from browser 102 | //http://127.0.0.1:8099/root/ServiceMethods.Sum?[2,2] 103 | 104 | //creates 10 dummy users 105 | for i := 1 to 10 do 106 | begin 107 | User := TAUser.Create; 108 | try 109 | randomname := IntToStr(Random(10000)); 110 | User.Name := 'User' + randomname; 111 | User.Surname := 'Surname' + randomname; 112 | User.Age := Random(50)+20; 113 | Login.Username := 'user' + randomname; 114 | Login.UserPass := TSQLAuthUser.ComputeHashedPassword(IntToStr(Random(9999)+1000)); 115 | Login.LastLogin := IncDay(Now,Random(60)*-1); 116 | User.Login := Login; 117 | RestServer.ORM.AddOrUpdate(User); 118 | finally 119 | User.Free; 120 | end; 121 | end; 122 | for i := 1 to 10 do 123 | begin 124 | Group := TAGroup.Create; 125 | try 126 | Group.Name := 'Group' + IntToStr(Random(10000)); 127 | Group.AllowNewUsers := Boolean(Random(1)); 128 | RestServer.ORM.AddOrUpdate(Group); 129 | finally 130 | Group.Free; 131 | end; 132 | end; 133 | ConsoleWaitForEnterKey; 134 | RestServer.Free; 135 | except 136 | on E: Exception do 137 | Writeln(E.ClassName, ': ', E.Message); 138 | end; 139 | end. 140 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/fpc/ORMRestServer.lps: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <ProjectSession> 4 | <PathDelim Value="\"/> 5 | <Version Value="11"/> 6 | <BuildModes Active="Default"/> 7 | <Units Count="17"> 8 | <Unit0> 9 | <Filename Value="ORMRestServer.pas"/> 10 | <IsPartOfProject Value="True"/> 11 | <EditorIndex Value="1"/> 12 | <TopLine Value="22"/> 13 | <CursorPos X="49" Y="45"/> 14 | <UsageCount Value="31"/> 15 | <Loaded Value="True"/> 16 | </Unit0> 17 | <Unit1> 18 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SQLite3\mORMotUI.pas"/> 19 | <EditorIndex Value="-1"/> 20 | <TopLine Value="112"/> 21 | <CursorPos X="21" Y="132"/> 22 | <UsageCount Value="9"/> 23 | </Unit1> 24 | <Unit2> 25 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SQLite3\mORMotBigTable.pas"/> 26 | <EditorIndex Value="-1"/> 27 | <CursorPos X="9" Y="67"/> 28 | <UsageCount Value="9"/> 29 | </Unit2> 30 | <Unit3> 31 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SQLite3\mORMotDB.pas"/> 32 | <EditorIndex Value="-1"/> 33 | <TopLine Value="145"/> 34 | <CursorPos X="9" Y="165"/> 35 | <UsageCount Value="9"/> 36 | </Unit3> 37 | <Unit4> 38 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SQLite3\mORMot.pas"/> 39 | <EditorIndex Value="-1"/> 40 | <TopLine Value="20393"/> 41 | <CursorPos X="16" Y="20424"/> 42 | <UsageCount Value="9"/> 43 | </Unit4> 44 | <Unit5> 45 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SynTaskDialog.pas"/> 46 | <EditorIndex Value="-1"/> 47 | <TopLine Value="84"/> 48 | <CursorPos X="3" Y="104"/> 49 | <UsageCount Value="9"/> 50 | </Unit5> 51 | <Unit6> 52 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SynSelfTests.pas"/> 53 | <EditorIndex Value="-1"/> 54 | <TopLine Value="144"/> 55 | <CursorPos X="9" Y="164"/> 56 | <UsageCount Value="9"/> 57 | </Unit6> 58 | <Unit7> 59 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SynFPCMetaFile.pas"/> 60 | <EditorIndex Value="-1"/> 61 | <CursorPos X="49" Y="12"/> 62 | <UsageCount Value="9"/> 63 | </Unit7> 64 | <Unit8> 65 | <Filename Value="..\..\..\..\Quick.ORM.App.Config.pas"/> 66 | <EditorIndex Value="-1"/> 67 | <TopLine Value="21"/> 68 | <CursorPos X="3" Y="41"/> 69 | <UsageCount Value="14"/> 70 | </Unit8> 71 | <Unit9> 72 | <Filename Value="D:\Lazarus\LibsFPC\mORMot\SynCrypto.pas"/> 73 | <EditorIndex Value="-1"/> 74 | <UsageCount Value="14"/> 75 | </Unit9> 76 | <Unit10> 77 | <Filename Value="..\..\..\..\..\QuickLib\quicklib.pas"/> 78 | <UnitName Value="QuickLib"/> 79 | <EditorIndex Value="-1"/> 80 | <CursorPos X="30" Y="13"/> 81 | <UsageCount Value="14"/> 82 | </Unit10> 83 | <Unit11> 84 | <Filename Value="..\..\..\..\Quick.ORM.Engine.pas"/> 85 | <EditorIndex Value="-1"/> 86 | <TopLine Value="140"/> 87 | <CursorPos X="3" Y="159"/> 88 | <UsageCount Value="14"/> 89 | </Unit11> 90 | <Unit12> 91 | <Filename Value="..\..\..\..\Quick.ORM.RestServer.pas"/> 92 | <EditorIndex Value="-1"/> 93 | <TopLine Value="407"/> 94 | <CursorPos X="75" Y="416"/> 95 | <UsageCount Value="10"/> 96 | </Unit12> 97 | <Unit13> 98 | <Filename Value="..\..\..\..\..\..\mORMot\SQLite3\mORMot.pas"/> 99 | <EditorIndex Value="-1"/> 100 | <TopLine Value="61393"/> 101 | <CursorPos X="19" Y="61412"/> 102 | <UsageCount Value="10"/> 103 | </Unit13> 104 | <Unit14> 105 | <Filename Value="..\..\..\..\QuickORM.inc"/> 106 | <EditorIndex Value="-1"/> 107 | <CursorPos X="18" Y="25"/> 108 | <UsageCount Value="10"/> 109 | </Unit14> 110 | <Unit15> 111 | <Filename Value="..\common\ORMDemo.Model.pas"/> 112 | <TopLine Value="6"/> 113 | <CursorPos X="69" Y="24"/> 114 | <UsageCount Value="10"/> 115 | <Loaded Value="True"/> 116 | </Unit15> 117 | <Unit16> 118 | <Filename Value="..\..\..\..\..\..\mORMot\SynSQLite3.pas"/> 119 | <IsVisibleTab Value="True"/> 120 | <EditorIndex Value="2"/> 121 | <TopLine Value="5380"/> 122 | <CursorPos X="66" Y="5403"/> 123 | <UsageCount Value="10"/> 124 | <Loaded Value="True"/> 125 | </Unit16> 126 | </Units> 127 | <JumpHistory Count="5" HistoryIndex="4"> 128 | <Position1> 129 | <Filename Value="..\common\ORMDemo.Model.pas"/> 130 | <Caret Line="31" Column="24" TopLine="4"/> 131 | </Position1> 132 | <Position2> 133 | <Filename Value="..\common\ORMDemo.Model.pas"/> 134 | <Caret Line="24" Column="69" TopLine="6"/> 135 | </Position2> 136 | <Position3> 137 | <Filename Value="ORMRestServer.pas"/> 138 | <Caret Line="56" Column="81" TopLine="35"/> 139 | </Position3> 140 | <Position4> 141 | <Filename Value="ORMRestServer.pas"/> 142 | <Caret Line="17" Column="37"/> 143 | </Position4> 144 | <Position5> 145 | <Filename Value="ORMRestServer.pas"/> 146 | <Caret Line="45" Column="49" TopLine="22"/> 147 | </Position5> 148 | </JumpHistory> 149 | <RunParams> 150 | <FormatVersion Value="2"/> 151 | <Modes Count="0" ActiveMode=""/> 152 | </RunParams> 153 | </ProjectSession> 154 | <Debugging> 155 | <BreakPoints Count="2"> 156 | <Item1> 157 | <Kind Value="bpkSource"/> 158 | <WatchScope Value="wpsLocal"/> 159 | <WatchKind Value="wpkWrite"/> 160 | <Source Value="D:\Lazarus\fpcsrc\packages\fcl-json\src\fpjsonrtti.pp"/> 161 | <Line Value="736"/> 162 | </Item1> 163 | <Item2> 164 | <Kind Value="bpkSource"/> 165 | <WatchScope Value="wpsLocal"/> 166 | <WatchKind Value="wpkWrite"/> 167 | <Source Value="D:\Lazarus\fpcsrc\packages\fcl-json\src\fpjsonrtti.pp"/> 168 | <Line Value="844"/> 169 | </Item2> 170 | </BreakPoints> 171 | </Debugging> 172 | </CONFIG> 173 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/Firemonkey/android/MobileHTTPRestClient.deployproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <Import Condition="Exists('$(BDS)\bin\CodeGear.Deployment.targets')" Project="$(BDS)\bin\CodeGear.Deployment.targets"/> 3 | <ProjectExtensions> 4 | <ProjectFileVersion>12</ProjectFileVersion> 5 | </ProjectExtensions> 6 | <PropertyGroup> 7 | <DeviceId Condition="'$(Platform)'=='Android'">06157df6495b5a3e</DeviceId> 8 | <DeviceId Condition="'$(Platform)'=='iOSDevice32'"/> 9 | <DeviceId Condition="'$(Platform)'=='iOSDevice64'"/> 10 | <DeviceId Condition="'$(Platform)'=='iOSSimulator'">iPhone5</DeviceId> 11 | </PropertyGroup> 12 | <ItemGroup Condition="'$(Platform)'=='iOSDevice64'"/> 13 | <ItemGroup Condition="'$(Platform)'=='Win64'"/> 14 | <ItemGroup Condition="'$(Platform)'=='iOSDevice32'"/> 15 | <ItemGroup Condition="'$(Platform)'=='Win32'"> 16 | <DeployFile Include="Win32\Debug\MobileHTTPRestClient.exe" Condition="'$(Config)'=='Debug'"> 17 | <RemoteDir>MobileHTTPRestClient\</RemoteDir> 18 | <RemoteName>MobileHTTPRestClient.exe</RemoteName> 19 | <DeployClass>ProjectOutput</DeployClass> 20 | <Operation>0</Operation> 21 | <LocalCommand/> 22 | <RemoteCommand/> 23 | <Overwrite>True</Overwrite> 24 | <Required>True</Required> 25 | </DeployFile> 26 | </ItemGroup> 27 | <ItemGroup Condition="'$(Platform)'=='OSX32'"> 28 | <DeployFile Include="$(BDS)\Redist\osx32\libcgsqlite3.dylib"> 29 | <RemoteDir>MobileHTTPRestClient.app\Contents\MacOS\</RemoteDir> 30 | <RemoteName>libcgsqlite3.dylib</RemoteName> 31 | <DeployClass>DependencyModule</DeployClass> 32 | <Operation>1</Operation> 33 | <LocalCommand/> 34 | <RemoteCommand/> 35 | <Overwrite>True</Overwrite> 36 | </DeployFile> 37 | <DeployFile Include="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib"> 38 | <RemoteDir>MobileHTTPRestClient.app\Contents\MacOS\</RemoteDir> 39 | <RemoteName>libcgunwind.1.0.dylib</RemoteName> 40 | <DeployClass>DependencyModule</DeployClass> 41 | <Operation>1</Operation> 42 | <LocalCommand/> 43 | <RemoteCommand/> 44 | <Overwrite>True</Overwrite> 45 | </DeployFile> 46 | </ItemGroup> 47 | <ItemGroup Condition="'$(Platform)'=='Android'"> 48 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png" Condition="'$(Config)'=='Debug'"> 49 | <RemoteDir>MobileHTTPRestClient\res\drawable-ldpi\</RemoteDir> 50 | <RemoteName>ic_launcher.png</RemoteName> 51 | <DeployClass>Android_LauncherIcon36</DeployClass> 52 | <Operation>1</Operation> 53 | <LocalCommand/> 54 | <RemoteCommand/> 55 | <Overwrite>True</Overwrite> 56 | </DeployFile> 57 | <DeployFile Include="..\..\bin\Android\Debug\AndroidManifest.xml" Condition="'$(Config)'=='Debug'"> 58 | <RemoteDir>MobileHTTPRestClient\</RemoteDir> 59 | <RemoteName>AndroidManifest.xml</RemoteName> 60 | <DeployClass>ProjectAndroidManifest</DeployClass> 61 | <Operation>1</Operation> 62 | <LocalCommand/> 63 | <RemoteCommand/> 64 | <Overwrite>True</Overwrite> 65 | </DeployFile> 66 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png" Condition="'$(Config)'=='Debug'"> 67 | <RemoteDir>MobileHTTPRestClient\res\drawable-xxhdpi\</RemoteDir> 68 | <RemoteName>ic_launcher.png</RemoteName> 69 | <DeployClass>Android_LauncherIcon144</DeployClass> 70 | <Operation>1</Operation> 71 | <LocalCommand/> 72 | <RemoteCommand/> 73 | <Overwrite>True</Overwrite> 74 | </DeployFile> 75 | <DeployFile Include="$(BDS)\lib\android\debug\armeabi\libnative-activity.so" Condition="'$(Config)'=='Debug'"> 76 | <RemoteDir>MobileHTTPRestClient\library\lib\armeabi\</RemoteDir> 77 | <RemoteName>libMobileHTTPRestClient.so</RemoteName> 78 | <DeployClass>AndroidLibnativeArmeabiFile</DeployClass> 79 | <Operation>1</Operation> 80 | <LocalCommand/> 81 | <RemoteCommand/> 82 | <Overwrite>True</Overwrite> 83 | </DeployFile> 84 | <DeployFile Include="..\..\bin\Android\Debug\libMobileHTTPRestClient.so" Condition="'$(Config)'=='Debug'"> 85 | <RemoteDir>MobileHTTPRestClient\library\lib\armeabi-v7a\</RemoteDir> 86 | <RemoteName>libMobileHTTPRestClient.so</RemoteName> 87 | <DeployClass>ProjectOutput</DeployClass> 88 | <Operation>1</Operation> 89 | <LocalCommand/> 90 | <RemoteCommand/> 91 | <Overwrite>True</Overwrite> 92 | <Required>True</Required> 93 | </DeployFile> 94 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png" Condition="'$(Config)'=='Debug'"> 95 | <RemoteDir>MobileHTTPRestClient\res\drawable-large\</RemoteDir> 96 | <RemoteName>splash_image.png</RemoteName> 97 | <DeployClass>Android_SplashImage640</DeployClass> 98 | <Operation>1</Operation> 99 | <LocalCommand/> 100 | <RemoteCommand/> 101 | <Overwrite>True</Overwrite> 102 | </DeployFile> 103 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png" Condition="'$(Config)'=='Debug'"> 104 | <RemoteDir>MobileHTTPRestClient\res\drawable-hdpi\</RemoteDir> 105 | <RemoteName>ic_launcher.png</RemoteName> 106 | <DeployClass>Android_LauncherIcon72</DeployClass> 107 | <Operation>1</Operation> 108 | <LocalCommand/> 109 | <RemoteCommand/> 110 | <Overwrite>True</Overwrite> 111 | </DeployFile> 112 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png" Condition="'$(Config)'=='Debug'"> 113 | <RemoteDir>MobileHTTPRestClient\res\drawable-xlarge\</RemoteDir> 114 | <RemoteName>splash_image.png</RemoteName> 115 | <DeployClass>Android_SplashImage960</DeployClass> 116 | <Operation>1</Operation> 117 | <LocalCommand/> 118 | <RemoteCommand/> 119 | <Overwrite>True</Overwrite> 120 | </DeployFile> 121 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png" Condition="'$(Config)'=='Debug'"> 122 | <RemoteDir>MobileHTTPRestClient\res\drawable-small\</RemoteDir> 123 | <RemoteName>splash_image.png</RemoteName> 124 | <DeployClass>Android_SplashImage426</DeployClass> 125 | <Operation>1</Operation> 126 | <LocalCommand/> 127 | <RemoteCommand/> 128 | <Overwrite>True</Overwrite> 129 | </DeployFile> 130 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png" Condition="'$(Config)'=='Debug'"> 131 | <RemoteDir>MobileHTTPRestClient\res\drawable-normal\</RemoteDir> 132 | <RemoteName>splash_image.png</RemoteName> 133 | <DeployClass>Android_SplashImage470</DeployClass> 134 | <Operation>1</Operation> 135 | <LocalCommand/> 136 | <RemoteCommand/> 137 | <Overwrite>True</Overwrite> 138 | </DeployFile> 139 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png" Condition="'$(Config)'=='Debug'"> 140 | <RemoteDir>MobileHTTPRestClient\res\drawable-xhdpi\</RemoteDir> 141 | <RemoteName>ic_launcher.png</RemoteName> 142 | <DeployClass>Android_LauncherIcon96</DeployClass> 143 | <Operation>1</Operation> 144 | <LocalCommand/> 145 | <RemoteCommand/> 146 | <Overwrite>True</Overwrite> 147 | </DeployFile> 148 | <DeployFile Include="..\..\bin\Android\Debug\classes.dex" Condition="'$(Config)'=='Debug'"> 149 | <RemoteDir>MobileHTTPRestClient\classes\</RemoteDir> 150 | <RemoteName>classes.dex</RemoteName> 151 | <DeployClass>AndroidClassesDexFile</DeployClass> 152 | <Operation>1</Operation> 153 | <LocalCommand/> 154 | <RemoteCommand/> 155 | <Overwrite>True</Overwrite> 156 | </DeployFile> 157 | <DeployFile Include="..\..\bin\Android\Debug\splash_image_def.xml" Condition="'$(Config)'=='Debug'"> 158 | <RemoteDir>MobileHTTPRestClient\res\drawable\</RemoteDir> 159 | <RemoteName>splash_image_def.xml</RemoteName> 160 | <DeployClass>AndroidSplashImageDef</DeployClass> 161 | <Operation>1</Operation> 162 | <LocalCommand/> 163 | <RemoteCommand/> 164 | <Overwrite>True</Overwrite> 165 | </DeployFile> 166 | <DeployFile Include="..\..\bin\Android\Debug\styles.xml" Condition="'$(Config)'=='Debug'"> 167 | <RemoteDir>MobileHTTPRestClient\res\values\</RemoteDir> 168 | <RemoteName>styles.xml</RemoteName> 169 | <DeployClass>AndroidSplashStyles</DeployClass> 170 | <Operation>1</Operation> 171 | <LocalCommand/> 172 | <RemoteCommand/> 173 | <Overwrite>True</Overwrite> 174 | </DeployFile> 175 | <DeployFile Include="$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png" Condition="'$(Config)'=='Debug'"> 176 | <RemoteDir>MobileHTTPRestClient\res\drawable-mdpi\</RemoteDir> 177 | <RemoteName>ic_launcher.png</RemoteName> 178 | <DeployClass>Android_LauncherIcon48</DeployClass> 179 | <Operation>1</Operation> 180 | <LocalCommand/> 181 | <RemoteCommand/> 182 | <Overwrite>True</Overwrite> 183 | </DeployFile> 184 | <DeployFile Include="$(BDS)\lib\android\debug\mips\libnative-activity.so" Condition="'$(Config)'=='Debug'"> 185 | <RemoteDir>MobileHTTPRestClient\library\lib\mips\</RemoteDir> 186 | <RemoteName>libMobileHTTPRestClient.so</RemoteName> 187 | <DeployClass>AndroidLibnativeMipsFile</DeployClass> 188 | <Operation>1</Operation> 189 | <LocalCommand/> 190 | <RemoteCommand/> 191 | <Overwrite>True</Overwrite> 192 | </DeployFile> 193 | <DeployFile Include="Android\Debug\classes.dex" Condition="'$(Config)'=='Debug'"> 194 | <RemoteDir>MobileHTTPRestClient\classes\</RemoteDir> 195 | <RemoteName>classes.dex</RemoteName> 196 | <DeployClass>AndroidClassesDexFile</DeployClass> 197 | <Operation>1</Operation> 198 | <LocalCommand/> 199 | <RemoteCommand/> 200 | <Overwrite>True</Overwrite> 201 | </DeployFile> 202 | <DeployFile Include="$(NDKBasePath)\prebuilt\android-arm\gdbserver\gdbserver" Condition="'$(Config)'=='Debug'"> 203 | <RemoteDir>MobileHTTPRestClient\library\lib\armeabi-v7a\</RemoteDir> 204 | <RemoteName>gdbserver</RemoteName> 205 | <DeployClass>AndroidGDBServer</DeployClass> 206 | <Operation>1</Operation> 207 | <LocalCommand/> 208 | <RemoteCommand/> 209 | <Overwrite>True</Overwrite> 210 | </DeployFile> 211 | </ItemGroup> 212 | <ItemGroup Condition="'$(Platform)'=='iOSSimulator'"> 213 | <DeployFile Include="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib"> 214 | <RemoteDir>MobileHTTPRestClient.app\</RemoteDir> 215 | <RemoteName>libcgunwind.1.0.dylib</RemoteName> 216 | <DeployClass>DependencyModule</DeployClass> 217 | <Operation>1</Operation> 218 | <LocalCommand/> 219 | <RemoteCommand/> 220 | <Overwrite>True</Overwrite> 221 | </DeployFile> 222 | <DeployFile Include="$(BDS)\Redist\iossimulator\libPCRE.dylib"> 223 | <RemoteDir>MobileHTTPRestClient.app\</RemoteDir> 224 | <RemoteName>libPCRE.dylib</RemoteName> 225 | <DeployClass>DependencyModule</DeployClass> 226 | <Operation>1</Operation> 227 | <LocalCommand/> 228 | <RemoteCommand/> 229 | <Overwrite>True</Overwrite> 230 | </DeployFile> 231 | </ItemGroup> 232 | </Project> 233 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ClientHTTPSocket.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{4735B76F-51C2-42CD-A564-B3567CCA1D00}</ProjectGuid> 4 | <ProjectVersion>18.2</ProjectVersion> 5 | <FrameworkType>VCL</FrameworkType> 6 | <MainSource>ClientHTTPSocket.dpr</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win64</Platform> 10 | <TargetedPlatforms>3</TargetedPlatforms> 11 | <AppType>Application</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''"> 22 | <Base_Win64>true</Base_Win64> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 27 | <Cfg_1>true</Cfg_1> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 32 | <Cfg_1_Win32>true</Cfg_1_Win32> 33 | <CfgParent>Cfg_1</CfgParent> 34 | <Cfg_1>true</Cfg_1> 35 | <Base>true</Base> 36 | </PropertyGroup> 37 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''"> 38 | <Cfg_1_Win64>true</Cfg_1_Win64> 39 | <CfgParent>Cfg_1</CfgParent> 40 | <Cfg_1>true</Cfg_1> 41 | <Base>true</Base> 42 | </PropertyGroup> 43 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 44 | <Cfg_2>true</Cfg_2> 45 | <CfgParent>Base</CfgParent> 46 | <Base>true</Base> 47 | </PropertyGroup> 48 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''"> 49 | <Cfg_2_Win32>true</Cfg_2_Win32> 50 | <CfgParent>Cfg_2</CfgParent> 51 | <Cfg_2>true</Cfg_2> 52 | <Base>true</Base> 53 | </PropertyGroup> 54 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''"> 55 | <Cfg_2_Win64>true</Cfg_2_Win64> 56 | <CfgParent>Cfg_2</CfgParent> 57 | <Cfg_2>true</Cfg_2> 58 | <Base>true</Base> 59 | </PropertyGroup> 60 | <PropertyGroup Condition="'$(Base)'!=''"> 61 | <DCC_DcuOutput>..\..\..\bin\$(Platform)\$(Config)\dcu</DCC_DcuOutput> 62 | <DCC_ExeOutput>..\..\..\bin\$(Platform)\$(Config)</DCC_ExeOutput> 63 | <DCC_E>false</DCC_E> 64 | <DCC_N>false</DCC_N> 65 | <DCC_S>false</DCC_S> 66 | <DCC_F>false</DCC_F> 67 | <DCC_K>false</DCC_K> 68 | <DCC_UsePackage>RESTComponents;FireDACIBDriver;FireDACCommon;RESTBackendComponents;soapserver;CloudService;FireDACCommonDriver;inet;FireDAC;FireDACSqliteDriver;soaprtl;soapmidas;$(DCC_UsePackage)</DCC_UsePackage> 69 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace> 70 | <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon> 71 | <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44> 72 | <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150> 73 | <SanitizedProjectName>ClientHTTPSocket</SanitizedProjectName> 74 | <DCC_DcpOutput>..\..\..\bin\$(Platform)\$(Config)</DCC_DcpOutput> 75 | <DCC_FrameworkPath>..\..\..\bin\$(Platform)\$(Config);$(DCC_FrameworkPath)</DCC_FrameworkPath> 76 | <VerInfo_Locale>3082</VerInfo_Locale> 77 | <DCC_UnitSearchPath>..\..\common;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> 78 | <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> 79 | </PropertyGroup> 80 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 81 | <DCC_UsePackage>DBXSqliteDriver;UbuntuProgressPackage;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;svnui;JvGlobus;FireDACADSDriver;JvPluginSystem;JvMM;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;TeeDB;Jcl;JvCore;JvCrypt;FireDACPgDriver;ibmonitor;FMXTee;SevenZippro;DbxCommonDriver;JvDlgs;JvRuntimeDesign;ibxpress;Tee;JvManagedThreads;xmlrtl;ibxbindings;fmxobj;vclwinx;JvTimeFramework;rtl;GR32_R;DbxClientDriver;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;bindcomp;appanalytics;CoolTrayIcon_D210_XE7;tmswizdXE11;IndyIPClient;bindcompvcl;TeeUI;TMSFMXPackPkgDXE11;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;JclVcl;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;JvControls;JvPrintPreview;Analog_XE7;JclContainers;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 82 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 83 | <BT_BuildType>Debug</BT_BuildType> 84 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 85 | <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> 86 | <VerInfo_Locale>1033</VerInfo_Locale> 87 | <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File> 88 | </PropertyGroup> 89 | <PropertyGroup Condition="'$(Base_Win64)'!=''"> 90 | <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File> 91 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace> 92 | <VerInfo_Locale>1033</VerInfo_Locale> 93 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 94 | <BT_BuildType>Debug</BT_BuildType> 95 | <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;CustomIPTransport;vcldsnap;bindcomp;appanalytics;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 96 | </PropertyGroup> 97 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 98 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 99 | <DCC_DebugDCUs>true</DCC_DebugDCUs> 100 | <DCC_Optimize>false</DCC_Optimize> 101 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 102 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 103 | <DCC_RemoteDebug>true</DCC_RemoteDebug> 104 | </PropertyGroup> 105 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 106 | <DCC_RemoteDebug>false</DCC_RemoteDebug> 107 | <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes> 108 | <AppEnableHighDPI>true</AppEnableHighDPI> 109 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 110 | <VerInfo_Locale>1033</VerInfo_Locale> 111 | </PropertyGroup> 112 | <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''"> 113 | <AppEnableHighDPI>true</AppEnableHighDPI> 114 | <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes> 115 | </PropertyGroup> 116 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 117 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 118 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 119 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 120 | <DCC_DebugInformation>0</DCC_DebugInformation> 121 | </PropertyGroup> 122 | <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''"> 123 | <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes> 124 | <AppEnableHighDPI>true</AppEnableHighDPI> 125 | </PropertyGroup> 126 | <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''"> 127 | <AppEnableHighDPI>true</AppEnableHighDPI> 128 | <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes> 129 | </PropertyGroup> 130 | <ItemGroup> 131 | <DelphiCompile Include="$(MainSource)"> 132 | <MainSource>MainSource</MainSource> 133 | </DelphiCompile> 134 | <DCCReference Include="ClientMain.pas"> 135 | <Form>MainForm</Form> 136 | <FormType>dfm</FormType> 137 | </DCCReference> 138 | <DCCReference Include="..\..\..\..\Quick.ORM.Form.Login.pas"> 139 | <Form>frmLogin</Form> 140 | <FormType>dfm</FormType> 141 | </DCCReference> 142 | <DCCReference Include="..\..\..\..\Quick.ORM.Security.GUI.pas"/> 143 | <DCCReference Include="..\..\..\..\Quick.AppSecurity.pas"/> 144 | <BuildConfiguration Include="Release"> 145 | <Key>Cfg_2</Key> 146 | <CfgParent>Base</CfgParent> 147 | </BuildConfiguration> 148 | <BuildConfiguration Include="Base"> 149 | <Key>Base</Key> 150 | </BuildConfiguration> 151 | <BuildConfiguration Include="Debug"> 152 | <Key>Cfg_1</Key> 153 | <CfgParent>Base</CfgParent> 154 | </BuildConfiguration> 155 | </ItemGroup> 156 | <ProjectExtensions> 157 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 158 | <Borland.ProjectType>Application</Borland.ProjectType> 159 | <BorlandProject> 160 | <Delphi.Personality> 161 | <Source> 162 | <Source Name="MainSource">ClientHTTPSocket.dpr</Source> 163 | </Source> 164 | <Excluded_Packages> 165 | <Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages> 166 | <Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages> 167 | <Excluded_Packages Name="$(BDSBIN)\dcloffice2k250.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> 168 | <Excluded_Packages Name="$(BDSBIN)\dclofficexp250.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> 169 | </Excluded_Packages> 170 | </Delphi.Personality> 171 | <Deployment Version="3"> 172 | <DeployFile LocalName="Win32\Debug\ClientHTTPSocket.exe" Configuration="Debug" Class="ProjectOutput"> 173 | <Platform Name="Win32"> 174 | <RemoteName>ClientHTTPSocket.exe</RemoteName> 175 | <Overwrite>true</Overwrite> 176 | </Platform> 177 | </DeployFile> 178 | <DeployFile LocalName="..\..\..\bin\Win64\Debug\ClientHTTPSocket.exe" Configuration="Debug" Class="ProjectOutput"> 179 | <Platform Name="Win64"> 180 | <RemoteName>ClientHTTPSocket.exe</RemoteName> 181 | <Overwrite>true</Overwrite> 182 | </Platform> 183 | </DeployFile> 184 | <DeployFile LocalName="..\..\..\bin\Win64\Debug\ClientHTTPSocket.rsm" Configuration="Debug" Class="DebugSymbols"> 185 | <Platform Name="Win64"> 186 | <RemoteName>ClientHTTPSocket.rsm</RemoteName> 187 | <Overwrite>true</Overwrite> 188 | </Platform> 189 | </DeployFile> 190 | <DeployClass Name="AdditionalDebugSymbols"> 191 | <Platform Name="iOSSimulator"> 192 | <Operation>1</Operation> 193 | </Platform> 194 | <Platform Name="OSX32"> 195 | <RemoteDir>Contents\MacOS</RemoteDir> 196 | <Operation>1</Operation> 197 | </Platform> 198 | <Platform Name="Win32"> 199 | <RemoteDir>Contents\MacOS</RemoteDir> 200 | <Operation>0</Operation> 201 | </Platform> 202 | </DeployClass> 203 | <DeployClass Name="AndroidClassesDexFile"> 204 | <Platform Name="Android"> 205 | <RemoteDir>classes</RemoteDir> 206 | <Operation>1</Operation> 207 | </Platform> 208 | </DeployClass> 209 | <DeployClass Name="AndroidGDBServer"> 210 | <Platform Name="Android"> 211 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 212 | <Operation>1</Operation> 213 | </Platform> 214 | </DeployClass> 215 | <DeployClass Name="AndroidLibnativeArmeabiFile"> 216 | <Platform Name="Android"> 217 | <RemoteDir>library\lib\armeabi</RemoteDir> 218 | <Operation>1</Operation> 219 | </Platform> 220 | </DeployClass> 221 | <DeployClass Name="AndroidLibnativeMipsFile"> 222 | <Platform Name="Android"> 223 | <RemoteDir>library\lib\mips</RemoteDir> 224 | <Operation>1</Operation> 225 | </Platform> 226 | </DeployClass> 227 | <DeployClass Name="AndroidServiceOutput"> 228 | <Platform Name="Android"> 229 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 230 | <Operation>1</Operation> 231 | </Platform> 232 | </DeployClass> 233 | <DeployClass Name="AndroidSplashImageDef"> 234 | <Platform Name="Android"> 235 | <RemoteDir>res\drawable</RemoteDir> 236 | <Operation>1</Operation> 237 | </Platform> 238 | </DeployClass> 239 | <DeployClass Name="AndroidSplashStyles"> 240 | <Platform Name="Android"> 241 | <RemoteDir>res\values</RemoteDir> 242 | <Operation>1</Operation> 243 | </Platform> 244 | </DeployClass> 245 | <DeployClass Name="Android_DefaultAppIcon"> 246 | <Platform Name="Android"> 247 | <RemoteDir>res\drawable</RemoteDir> 248 | <Operation>1</Operation> 249 | </Platform> 250 | </DeployClass> 251 | <DeployClass Name="Android_LauncherIcon144"> 252 | <Platform Name="Android"> 253 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> 254 | <Operation>1</Operation> 255 | </Platform> 256 | </DeployClass> 257 | <DeployClass Name="Android_LauncherIcon36"> 258 | <Platform Name="Android"> 259 | <RemoteDir>res\drawable-ldpi</RemoteDir> 260 | <Operation>1</Operation> 261 | </Platform> 262 | </DeployClass> 263 | <DeployClass Name="Android_LauncherIcon48"> 264 | <Platform Name="Android"> 265 | <RemoteDir>res\drawable-mdpi</RemoteDir> 266 | <Operation>1</Operation> 267 | </Platform> 268 | </DeployClass> 269 | <DeployClass Name="Android_LauncherIcon72"> 270 | <Platform Name="Android"> 271 | <RemoteDir>res\drawable-hdpi</RemoteDir> 272 | <Operation>1</Operation> 273 | </Platform> 274 | </DeployClass> 275 | <DeployClass Name="Android_LauncherIcon96"> 276 | <Platform Name="Android"> 277 | <RemoteDir>res\drawable-xhdpi</RemoteDir> 278 | <Operation>1</Operation> 279 | </Platform> 280 | </DeployClass> 281 | <DeployClass Name="Android_SplashImage426"> 282 | <Platform Name="Android"> 283 | <RemoteDir>res\drawable-small</RemoteDir> 284 | <Operation>1</Operation> 285 | </Platform> 286 | </DeployClass> 287 | <DeployClass Name="Android_SplashImage470"> 288 | <Platform Name="Android"> 289 | <RemoteDir>res\drawable-normal</RemoteDir> 290 | <Operation>1</Operation> 291 | </Platform> 292 | </DeployClass> 293 | <DeployClass Name="Android_SplashImage640"> 294 | <Platform Name="Android"> 295 | <RemoteDir>res\drawable-large</RemoteDir> 296 | <Operation>1</Operation> 297 | </Platform> 298 | </DeployClass> 299 | <DeployClass Name="Android_SplashImage960"> 300 | <Platform Name="Android"> 301 | <RemoteDir>res\drawable-xlarge</RemoteDir> 302 | <Operation>1</Operation> 303 | </Platform> 304 | </DeployClass> 305 | <DeployClass Name="DebugSymbols"> 306 | <Platform Name="iOSSimulator"> 307 | <Operation>1</Operation> 308 | </Platform> 309 | <Platform Name="OSX32"> 310 | <RemoteDir>Contents\MacOS</RemoteDir> 311 | <Operation>1</Operation> 312 | </Platform> 313 | <Platform Name="Win32"> 314 | <Operation>0</Operation> 315 | </Platform> 316 | </DeployClass> 317 | <DeployClass Name="DependencyFramework"> 318 | <Platform Name="OSX32"> 319 | <RemoteDir>Contents\MacOS</RemoteDir> 320 | <Operation>1</Operation> 321 | <Extensions>.framework</Extensions> 322 | </Platform> 323 | <Platform Name="Win32"> 324 | <Operation>0</Operation> 325 | </Platform> 326 | </DeployClass> 327 | <DeployClass Name="DependencyModule"> 328 | <Platform Name="iOSDevice32"> 329 | <Operation>1</Operation> 330 | <Extensions>.dylib</Extensions> 331 | </Platform> 332 | <Platform Name="iOSDevice64"> 333 | <Operation>1</Operation> 334 | <Extensions>.dylib</Extensions> 335 | </Platform> 336 | <Platform Name="iOSSimulator"> 337 | <Operation>1</Operation> 338 | <Extensions>.dylib</Extensions> 339 | </Platform> 340 | <Platform Name="OSX32"> 341 | <RemoteDir>Contents\MacOS</RemoteDir> 342 | <Operation>1</Operation> 343 | <Extensions>.dylib</Extensions> 344 | </Platform> 345 | <Platform Name="Win32"> 346 | <Operation>0</Operation> 347 | <Extensions>.dll;.bpl</Extensions> 348 | </Platform> 349 | </DeployClass> 350 | <DeployClass Required="true" Name="DependencyPackage"> 351 | <Platform Name="iOSDevice32"> 352 | <Operation>1</Operation> 353 | <Extensions>.dylib</Extensions> 354 | </Platform> 355 | <Platform Name="iOSDevice64"> 356 | <Operation>1</Operation> 357 | <Extensions>.dylib</Extensions> 358 | </Platform> 359 | <Platform Name="iOSSimulator"> 360 | <Operation>1</Operation> 361 | <Extensions>.dylib</Extensions> 362 | </Platform> 363 | <Platform Name="OSX32"> 364 | <RemoteDir>Contents\MacOS</RemoteDir> 365 | <Operation>1</Operation> 366 | <Extensions>.dylib</Extensions> 367 | </Platform> 368 | <Platform Name="Win32"> 369 | <Operation>0</Operation> 370 | <Extensions>.bpl</Extensions> 371 | </Platform> 372 | </DeployClass> 373 | <DeployClass Name="File"> 374 | <Platform Name="Android"> 375 | <Operation>0</Operation> 376 | </Platform> 377 | <Platform Name="iOSDevice32"> 378 | <Operation>0</Operation> 379 | </Platform> 380 | <Platform Name="iOSDevice64"> 381 | <Operation>0</Operation> 382 | </Platform> 383 | <Platform Name="iOSSimulator"> 384 | <Operation>0</Operation> 385 | </Platform> 386 | <Platform Name="OSX32"> 387 | <RemoteDir>Contents\Resources\StartUp\</RemoteDir> 388 | <Operation>0</Operation> 389 | </Platform> 390 | <Platform Name="Win32"> 391 | <Operation>0</Operation> 392 | </Platform> 393 | </DeployClass> 394 | <DeployClass Name="iPad_Launch1024"> 395 | <Platform Name="iOSDevice32"> 396 | <Operation>1</Operation> 397 | </Platform> 398 | <Platform Name="iOSDevice64"> 399 | <Operation>1</Operation> 400 | </Platform> 401 | <Platform Name="iOSSimulator"> 402 | <Operation>1</Operation> 403 | </Platform> 404 | </DeployClass> 405 | <DeployClass Name="iPad_Launch1536"> 406 | <Platform Name="iOSDevice32"> 407 | <Operation>1</Operation> 408 | </Platform> 409 | <Platform Name="iOSDevice64"> 410 | <Operation>1</Operation> 411 | </Platform> 412 | <Platform Name="iOSSimulator"> 413 | <Operation>1</Operation> 414 | </Platform> 415 | </DeployClass> 416 | <DeployClass Name="iPad_Launch2048"> 417 | <Platform Name="iOSDevice32"> 418 | <Operation>1</Operation> 419 | </Platform> 420 | <Platform Name="iOSDevice64"> 421 | <Operation>1</Operation> 422 | </Platform> 423 | <Platform Name="iOSSimulator"> 424 | <Operation>1</Operation> 425 | </Platform> 426 | </DeployClass> 427 | <DeployClass Name="iPad_Launch768"> 428 | <Platform Name="iOSDevice32"> 429 | <Operation>1</Operation> 430 | </Platform> 431 | <Platform Name="iOSDevice64"> 432 | <Operation>1</Operation> 433 | </Platform> 434 | <Platform Name="iOSSimulator"> 435 | <Operation>1</Operation> 436 | </Platform> 437 | </DeployClass> 438 | <DeployClass Name="iPhone_Launch320"> 439 | <Platform Name="iOSDevice32"> 440 | <Operation>1</Operation> 441 | </Platform> 442 | <Platform Name="iOSDevice64"> 443 | <Operation>1</Operation> 444 | </Platform> 445 | <Platform Name="iOSSimulator"> 446 | <Operation>1</Operation> 447 | </Platform> 448 | </DeployClass> 449 | <DeployClass Name="iPhone_Launch640"> 450 | <Platform Name="iOSDevice32"> 451 | <Operation>1</Operation> 452 | </Platform> 453 | <Platform Name="iOSDevice64"> 454 | <Operation>1</Operation> 455 | </Platform> 456 | <Platform Name="iOSSimulator"> 457 | <Operation>1</Operation> 458 | </Platform> 459 | </DeployClass> 460 | <DeployClass Name="iPhone_Launch640x1136"> 461 | <Platform Name="iOSDevice32"> 462 | <Operation>1</Operation> 463 | </Platform> 464 | <Platform Name="iOSDevice64"> 465 | <Operation>1</Operation> 466 | </Platform> 467 | <Platform Name="iOSSimulator"> 468 | <Operation>1</Operation> 469 | </Platform> 470 | </DeployClass> 471 | <DeployClass Name="ProjectAndroidManifest"> 472 | <Platform Name="Android"> 473 | <Operation>1</Operation> 474 | </Platform> 475 | </DeployClass> 476 | <DeployClass Name="ProjectiOSDeviceDebug"> 477 | <Platform Name="iOSDevice32"> 478 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 479 | <Operation>1</Operation> 480 | </Platform> 481 | <Platform Name="iOSDevice64"> 482 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 483 | <Operation>1</Operation> 484 | </Platform> 485 | </DeployClass> 486 | <DeployClass Name="ProjectiOSDeviceResourceRules"> 487 | <Platform Name="iOSDevice32"> 488 | <Operation>1</Operation> 489 | </Platform> 490 | <Platform Name="iOSDevice64"> 491 | <Operation>1</Operation> 492 | </Platform> 493 | </DeployClass> 494 | <DeployClass Name="ProjectiOSEntitlements"> 495 | <Platform Name="iOSDevice32"> 496 | <RemoteDir>..\</RemoteDir> 497 | <Operation>1</Operation> 498 | </Platform> 499 | <Platform Name="iOSDevice64"> 500 | <RemoteDir>..\</RemoteDir> 501 | <Operation>1</Operation> 502 | </Platform> 503 | </DeployClass> 504 | <DeployClass Name="ProjectiOSInfoPList"> 505 | <Platform Name="iOSDevice32"> 506 | <Operation>1</Operation> 507 | </Platform> 508 | <Platform Name="iOSDevice64"> 509 | <Operation>1</Operation> 510 | </Platform> 511 | <Platform Name="iOSSimulator"> 512 | <Operation>1</Operation> 513 | </Platform> 514 | </DeployClass> 515 | <DeployClass Name="ProjectiOSResource"> 516 | <Platform Name="iOSDevice32"> 517 | <Operation>1</Operation> 518 | </Platform> 519 | <Platform Name="iOSDevice64"> 520 | <Operation>1</Operation> 521 | </Platform> 522 | <Platform Name="iOSSimulator"> 523 | <Operation>1</Operation> 524 | </Platform> 525 | </DeployClass> 526 | <DeployClass Name="ProjectOSXEntitlements"> 527 | <Platform Name="OSX32"> 528 | <RemoteDir>..\</RemoteDir> 529 | <Operation>1</Operation> 530 | </Platform> 531 | </DeployClass> 532 | <DeployClass Name="ProjectOSXInfoPList"> 533 | <Platform Name="OSX32"> 534 | <RemoteDir>Contents</RemoteDir> 535 | <Operation>1</Operation> 536 | </Platform> 537 | </DeployClass> 538 | <DeployClass Name="ProjectOSXResource"> 539 | <Platform Name="OSX32"> 540 | <RemoteDir>Contents\Resources</RemoteDir> 541 | <Operation>1</Operation> 542 | </Platform> 543 | </DeployClass> 544 | <DeployClass Required="true" Name="ProjectOutput"> 545 | <Platform Name="Android"> 546 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 547 | <Operation>1</Operation> 548 | </Platform> 549 | <Platform Name="iOSDevice32"> 550 | <Operation>1</Operation> 551 | </Platform> 552 | <Platform Name="iOSDevice64"> 553 | <Operation>1</Operation> 554 | </Platform> 555 | <Platform Name="iOSSimulator"> 556 | <Operation>1</Operation> 557 | </Platform> 558 | <Platform Name="Linux64"> 559 | <Operation>1</Operation> 560 | </Platform> 561 | <Platform Name="OSX32"> 562 | <RemoteDir>Contents\MacOS</RemoteDir> 563 | <Operation>1</Operation> 564 | </Platform> 565 | <Platform Name="Win32"> 566 | <Operation>0</Operation> 567 | </Platform> 568 | </DeployClass> 569 | <DeployClass Name="ProjectUWPManifest"> 570 | <Platform Name="Win32"> 571 | <Operation>1</Operation> 572 | </Platform> 573 | <Platform Name="Win64"> 574 | <Operation>1</Operation> 575 | </Platform> 576 | </DeployClass> 577 | <DeployClass Name="UWP_DelphiLogo150"> 578 | <Platform Name="Win32"> 579 | <RemoteDir>Assets</RemoteDir> 580 | <Operation>1</Operation> 581 | </Platform> 582 | <Platform Name="Win64"> 583 | <RemoteDir>Assets</RemoteDir> 584 | <Operation>1</Operation> 585 | </Platform> 586 | </DeployClass> 587 | <DeployClass Name="UWP_DelphiLogo44"> 588 | <Platform Name="Win32"> 589 | <RemoteDir>Assets</RemoteDir> 590 | <Operation>1</Operation> 591 | </Platform> 592 | <Platform Name="Win64"> 593 | <RemoteDir>Assets</RemoteDir> 594 | <Operation>1</Operation> 595 | </Platform> 596 | </DeployClass> 597 | <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> 598 | <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/> 599 | <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> 600 | <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/> 601 | <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/> 602 | <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/> 603 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> 604 | <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> 605 | </Deployment> 606 | <Platforms> 607 | <Platform value="Win32">True</Platform> 608 | <Platform value="Win64">True</Platform> 609 | </Platforms> 610 | </BorlandProject> 611 | <ProjectFileVersion>12</ProjectFileVersion> 612 | </ProjectExtensions> 613 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 614 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 615 | <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/> 616 | </Project> 617 | -------------------------------------------------------------------------------- /samples/ORMUF8HelperTest/QuickUTF8Helper_Test.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{61E4438A-3B7B-456A-8A96-5EF48AA3B7B2}</ProjectGuid> 4 | <ProjectVersion>18.2</ProjectVersion> 5 | <FrameworkType>None</FrameworkType> 6 | <MainSource>QuickUTF8Helper_Test.dpr</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 10 | <TargetedPlatforms>1</TargetedPlatforms> 11 | <AppType>Console</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''"> 17 | <Base_Android>true</Base_Android> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Base)'=='true') or '$(Base_iOSDevice32)'!=''"> 22 | <Base_iOSDevice32>true</Base_iOSDevice32> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''"> 27 | <Base_iOSDevice64>true</Base_iOSDevice64> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Base)'=='true') or '$(Base_iOSSimulator)'!=''"> 32 | <Base_iOSSimulator>true</Base_iOSSimulator> 33 | <CfgParent>Base</CfgParent> 34 | <Base>true</Base> 35 | </PropertyGroup> 36 | <PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''"> 37 | <Base_OSX32>true</Base_OSX32> 38 | <CfgParent>Base</CfgParent> 39 | <Base>true</Base> 40 | </PropertyGroup> 41 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 42 | <Base_Win32>true</Base_Win32> 43 | <CfgParent>Base</CfgParent> 44 | <Base>true</Base> 45 | </PropertyGroup> 46 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''"> 47 | <Base_Win64>true</Base_Win64> 48 | <CfgParent>Base</CfgParent> 49 | <Base>true</Base> 50 | </PropertyGroup> 51 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 52 | <Cfg_1>true</Cfg_1> 53 | <CfgParent>Base</CfgParent> 54 | <Base>true</Base> 55 | </PropertyGroup> 56 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 57 | <Cfg_1_Win32>true</Cfg_1_Win32> 58 | <CfgParent>Cfg_1</CfgParent> 59 | <Cfg_1>true</Cfg_1> 60 | <Base>true</Base> 61 | </PropertyGroup> 62 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 63 | <Cfg_2>true</Cfg_2> 64 | <CfgParent>Base</CfgParent> 65 | <Base>true</Base> 66 | </PropertyGroup> 67 | <PropertyGroup Condition="'$(Base)'!=''"> 68 | <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> 69 | <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput> 70 | <DCC_E>false</DCC_E> 71 | <DCC_N>false</DCC_N> 72 | <DCC_S>false</DCC_S> 73 | <DCC_F>false</DCC_F> 74 | <DCC_K>false</DCC_K> 75 | <DCC_UsePackage>RESTComponents;FireDACIBDriver;FireDACCommon;RESTBackendComponents;soapserver;CloudService;FireDACCommonDriver;inet;FireDAC;FireDACSqliteDriver;soaprtl;soapmidas;$(DCC_UsePackage)</DCC_UsePackage> 76 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace> 77 | <SanitizedProjectName>QuickUTF8Helper_Test</SanitizedProjectName> 78 | </PropertyGroup> 79 | <PropertyGroup Condition="'$(Base_Android)'!=''"> 80 | <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;dbexpress;IndyCore;dsnap;bindengine;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;ibxbindings;rtl;DbxClientDriver;CustomIPTransport;bindcomp;CoolTrayIcon_D210_XE7;IndyIPClient;dbxcds;Gauge3D;dsnapxml;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage> 81 | <Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36> 82 | <Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48> 83 | <Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72> 84 | <Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96> 85 | <Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144> 86 | <Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426> 87 | <Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470> 88 | <Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640> 89 | <Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960> 90 | <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.dex.jar</EnabledSysJars> 91 | </PropertyGroup> 92 | <PropertyGroup Condition="'$(Base_iOSDevice32)'!=''"> 93 | <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;dbexpress;IndyCore;dsnap;bindengine;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;ibxbindings;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 94 | </PropertyGroup> 95 | <PropertyGroup Condition="'$(Base_iOSDevice64)'!=''"> 96 | <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;tethering;vacommpkgdXE11;bindcompfmx;FmxTeeUI;fmx;dbexpress;IndyCore;dsnap;bindengine;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;ibxbindings;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;TMSFMXPackPkgDXE11;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 97 | </PropertyGroup> 98 | <PropertyGroup Condition="'$(Base_iOSSimulator)'!=''"> 99 | <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;dbexpress;IndyCore;dsnap;bindengine;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;ibxbindings;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 100 | </PropertyGroup> 101 | <PropertyGroup Condition="'$(Base_OSX32)'!=''"> 102 | <DCC_UsePackage>DBXSqliteDriver;DBXInterBaseDriver;tethering;bindcompfmx;inetdb;FmxTeeUI;fmx;fmxdae;dbexpress;IndyCore;dsnap;bindengine;DBXMySQLDriver;FireDACMySQLDriver;FireDACCommonODBC;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDACPgDriver;ibmonitor;FMXTee;DbxCommonDriver;ibxpress;xmlrtl;ibxbindings;fmxobj;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;inetdbxpress;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 103 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 104 | </PropertyGroup> 105 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 106 | <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> 107 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 108 | <BT_BuildType>Debug</BT_BuildType> 109 | <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> 110 | <VerInfo_Locale>1033</VerInfo_Locale> 111 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 112 | <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44> 113 | <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150> 114 | </PropertyGroup> 115 | <PropertyGroup Condition="'$(Base_Win64)'!=''"> 116 | <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> 117 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 118 | <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44> 119 | <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150> 120 | </PropertyGroup> 121 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 122 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 123 | <DCC_DebugDCUs>true</DCC_DebugDCUs> 124 | <DCC_Optimize>false</DCC_Optimize> 125 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 126 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 127 | <DCC_RemoteDebug>true</DCC_RemoteDebug> 128 | </PropertyGroup> 129 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 130 | <DCC_RemoteDebug>false</DCC_RemoteDebug> 131 | </PropertyGroup> 132 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 133 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 134 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 135 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 136 | <DCC_DebugInformation>0</DCC_DebugInformation> 137 | </PropertyGroup> 138 | <ItemGroup> 139 | <DelphiCompile Include="$(MainSource)"> 140 | <MainSource>MainSource</MainSource> 141 | </DelphiCompile> 142 | <BuildConfiguration Include="Release"> 143 | <Key>Cfg_2</Key> 144 | <CfgParent>Base</CfgParent> 145 | </BuildConfiguration> 146 | <BuildConfiguration Include="Base"> 147 | <Key>Base</Key> 148 | </BuildConfiguration> 149 | <BuildConfiguration Include="Debug"> 150 | <Key>Cfg_1</Key> 151 | <CfgParent>Base</CfgParent> 152 | </BuildConfiguration> 153 | </ItemGroup> 154 | <ProjectExtensions> 155 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 156 | <Borland.ProjectType>Application</Borland.ProjectType> 157 | <BorlandProject> 158 | <Delphi.Personality> 159 | <Source> 160 | <Source Name="MainSource">QuickUTF8Helper_Test.dpr</Source> 161 | </Source> 162 | </Delphi.Personality> 163 | <Deployment Version="3"> 164 | <DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule"> 165 | <Platform Name="OSX32"> 166 | <Overwrite>true</Overwrite> 167 | </Platform> 168 | </DeployFile> 169 | <DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule"> 170 | <Platform Name="iOSSimulator"> 171 | <Overwrite>true</Overwrite> 172 | </Platform> 173 | </DeployFile> 174 | <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule"> 175 | <Platform Name="iOSSimulator"> 176 | <Overwrite>true</Overwrite> 177 | </Platform> 178 | </DeployFile> 179 | <DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule"> 180 | <Platform Name="OSX32"> 181 | <Overwrite>true</Overwrite> 182 | </Platform> 183 | </DeployFile> 184 | <DeployFile LocalName="Win32\Debug\QuickUTF8Helper_Test.exe" Configuration="Debug" Class="ProjectOutput"> 185 | <Platform Name="Win32"> 186 | <RemoteName>QuickUTF8Helper_Test.exe</RemoteName> 187 | <Overwrite>true</Overwrite> 188 | </Platform> 189 | </DeployFile> 190 | <DeployClass Name="AdditionalDebugSymbols"> 191 | <Platform Name="iOSSimulator"> 192 | <Operation>1</Operation> 193 | </Platform> 194 | <Platform Name="OSX32"> 195 | <RemoteDir>Contents\MacOS</RemoteDir> 196 | <Operation>1</Operation> 197 | </Platform> 198 | <Platform Name="Win32"> 199 | <RemoteDir>Contents\MacOS</RemoteDir> 200 | <Operation>0</Operation> 201 | </Platform> 202 | </DeployClass> 203 | <DeployClass Name="AndroidClassesDexFile"> 204 | <Platform Name="Android"> 205 | <RemoteDir>classes</RemoteDir> 206 | <Operation>1</Operation> 207 | </Platform> 208 | </DeployClass> 209 | <DeployClass Name="AndroidGDBServer"> 210 | <Platform Name="Android"> 211 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 212 | <Operation>1</Operation> 213 | </Platform> 214 | </DeployClass> 215 | <DeployClass Name="AndroidLibnativeArmeabiFile"> 216 | <Platform Name="Android"> 217 | <RemoteDir>library\lib\armeabi</RemoteDir> 218 | <Operation>1</Operation> 219 | </Platform> 220 | </DeployClass> 221 | <DeployClass Name="AndroidLibnativeMipsFile"> 222 | <Platform Name="Android"> 223 | <RemoteDir>library\lib\mips</RemoteDir> 224 | <Operation>1</Operation> 225 | </Platform> 226 | </DeployClass> 227 | <DeployClass Name="AndroidServiceOutput"> 228 | <Platform Name="Android"> 229 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 230 | <Operation>1</Operation> 231 | </Platform> 232 | </DeployClass> 233 | <DeployClass Name="AndroidSplashImageDef"> 234 | <Platform Name="Android"> 235 | <RemoteDir>res\drawable</RemoteDir> 236 | <Operation>1</Operation> 237 | </Platform> 238 | </DeployClass> 239 | <DeployClass Name="AndroidSplashStyles"> 240 | <Platform Name="Android"> 241 | <RemoteDir>res\values</RemoteDir> 242 | <Operation>1</Operation> 243 | </Platform> 244 | </DeployClass> 245 | <DeployClass Name="Android_DefaultAppIcon"> 246 | <Platform Name="Android"> 247 | <RemoteDir>res\drawable</RemoteDir> 248 | <Operation>1</Operation> 249 | </Platform> 250 | </DeployClass> 251 | <DeployClass Name="Android_LauncherIcon144"> 252 | <Platform Name="Android"> 253 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> 254 | <Operation>1</Operation> 255 | </Platform> 256 | </DeployClass> 257 | <DeployClass Name="Android_LauncherIcon36"> 258 | <Platform Name="Android"> 259 | <RemoteDir>res\drawable-ldpi</RemoteDir> 260 | <Operation>1</Operation> 261 | </Platform> 262 | </DeployClass> 263 | <DeployClass Name="Android_LauncherIcon48"> 264 | <Platform Name="Android"> 265 | <RemoteDir>res\drawable-mdpi</RemoteDir> 266 | <Operation>1</Operation> 267 | </Platform> 268 | </DeployClass> 269 | <DeployClass Name="Android_LauncherIcon72"> 270 | <Platform Name="Android"> 271 | <RemoteDir>res\drawable-hdpi</RemoteDir> 272 | <Operation>1</Operation> 273 | </Platform> 274 | </DeployClass> 275 | <DeployClass Name="Android_LauncherIcon96"> 276 | <Platform Name="Android"> 277 | <RemoteDir>res\drawable-xhdpi</RemoteDir> 278 | <Operation>1</Operation> 279 | </Platform> 280 | </DeployClass> 281 | <DeployClass Name="Android_SplashImage426"> 282 | <Platform Name="Android"> 283 | <RemoteDir>res\drawable-small</RemoteDir> 284 | <Operation>1</Operation> 285 | </Platform> 286 | </DeployClass> 287 | <DeployClass Name="Android_SplashImage470"> 288 | <Platform Name="Android"> 289 | <RemoteDir>res\drawable-normal</RemoteDir> 290 | <Operation>1</Operation> 291 | </Platform> 292 | </DeployClass> 293 | <DeployClass Name="Android_SplashImage640"> 294 | <Platform Name="Android"> 295 | <RemoteDir>res\drawable-large</RemoteDir> 296 | <Operation>1</Operation> 297 | </Platform> 298 | </DeployClass> 299 | <DeployClass Name="Android_SplashImage960"> 300 | <Platform Name="Android"> 301 | <RemoteDir>res\drawable-xlarge</RemoteDir> 302 | <Operation>1</Operation> 303 | </Platform> 304 | </DeployClass> 305 | <DeployClass Name="DebugSymbols"> 306 | <Platform Name="iOSSimulator"> 307 | <Operation>1</Operation> 308 | </Platform> 309 | <Platform Name="OSX32"> 310 | <RemoteDir>Contents\MacOS</RemoteDir> 311 | <Operation>1</Operation> 312 | </Platform> 313 | <Platform Name="Win32"> 314 | <Operation>0</Operation> 315 | </Platform> 316 | </DeployClass> 317 | <DeployClass Name="DependencyFramework"> 318 | <Platform Name="OSX32"> 319 | <RemoteDir>Contents\MacOS</RemoteDir> 320 | <Operation>1</Operation> 321 | <Extensions>.framework</Extensions> 322 | </Platform> 323 | <Platform Name="Win32"> 324 | <Operation>0</Operation> 325 | </Platform> 326 | </DeployClass> 327 | <DeployClass Name="DependencyModule"> 328 | <Platform Name="iOSDevice32"> 329 | <Operation>1</Operation> 330 | <Extensions>.dylib</Extensions> 331 | </Platform> 332 | <Platform Name="iOSDevice64"> 333 | <Operation>1</Operation> 334 | <Extensions>.dylib</Extensions> 335 | </Platform> 336 | <Platform Name="iOSSimulator"> 337 | <Operation>1</Operation> 338 | <Extensions>.dylib</Extensions> 339 | </Platform> 340 | <Platform Name="OSX32"> 341 | <RemoteDir>Contents\MacOS</RemoteDir> 342 | <Operation>1</Operation> 343 | <Extensions>.dylib</Extensions> 344 | </Platform> 345 | <Platform Name="Win32"> 346 | <Operation>0</Operation> 347 | <Extensions>.dll;.bpl</Extensions> 348 | </Platform> 349 | </DeployClass> 350 | <DeployClass Required="true" Name="DependencyPackage"> 351 | <Platform Name="iOSDevice32"> 352 | <Operation>1</Operation> 353 | <Extensions>.dylib</Extensions> 354 | </Platform> 355 | <Platform Name="iOSDevice64"> 356 | <Operation>1</Operation> 357 | <Extensions>.dylib</Extensions> 358 | </Platform> 359 | <Platform Name="iOSSimulator"> 360 | <Operation>1</Operation> 361 | <Extensions>.dylib</Extensions> 362 | </Platform> 363 | <Platform Name="OSX32"> 364 | <RemoteDir>Contents\MacOS</RemoteDir> 365 | <Operation>1</Operation> 366 | <Extensions>.dylib</Extensions> 367 | </Platform> 368 | <Platform Name="Win32"> 369 | <Operation>0</Operation> 370 | <Extensions>.bpl</Extensions> 371 | </Platform> 372 | </DeployClass> 373 | <DeployClass Name="File"> 374 | <Platform Name="Android"> 375 | <Operation>0</Operation> 376 | </Platform> 377 | <Platform Name="iOSDevice32"> 378 | <Operation>0</Operation> 379 | </Platform> 380 | <Platform Name="iOSDevice64"> 381 | <Operation>0</Operation> 382 | </Platform> 383 | <Platform Name="iOSSimulator"> 384 | <Operation>0</Operation> 385 | </Platform> 386 | <Platform Name="OSX32"> 387 | <RemoteDir>Contents\Resources\StartUp\</RemoteDir> 388 | <Operation>0</Operation> 389 | </Platform> 390 | <Platform Name="Win32"> 391 | <Operation>0</Operation> 392 | </Platform> 393 | </DeployClass> 394 | <DeployClass Name="iPad_Launch1024"> 395 | <Platform Name="iOSDevice32"> 396 | <Operation>1</Operation> 397 | </Platform> 398 | <Platform Name="iOSDevice64"> 399 | <Operation>1</Operation> 400 | </Platform> 401 | <Platform Name="iOSSimulator"> 402 | <Operation>1</Operation> 403 | </Platform> 404 | </DeployClass> 405 | <DeployClass Name="iPad_Launch1536"> 406 | <Platform Name="iOSDevice32"> 407 | <Operation>1</Operation> 408 | </Platform> 409 | <Platform Name="iOSDevice64"> 410 | <Operation>1</Operation> 411 | </Platform> 412 | <Platform Name="iOSSimulator"> 413 | <Operation>1</Operation> 414 | </Platform> 415 | </DeployClass> 416 | <DeployClass Name="iPad_Launch2048"> 417 | <Platform Name="iOSDevice32"> 418 | <Operation>1</Operation> 419 | </Platform> 420 | <Platform Name="iOSDevice64"> 421 | <Operation>1</Operation> 422 | </Platform> 423 | <Platform Name="iOSSimulator"> 424 | <Operation>1</Operation> 425 | </Platform> 426 | </DeployClass> 427 | <DeployClass Name="iPad_Launch768"> 428 | <Platform Name="iOSDevice32"> 429 | <Operation>1</Operation> 430 | </Platform> 431 | <Platform Name="iOSDevice64"> 432 | <Operation>1</Operation> 433 | </Platform> 434 | <Platform Name="iOSSimulator"> 435 | <Operation>1</Operation> 436 | </Platform> 437 | </DeployClass> 438 | <DeployClass Name="iPhone_Launch320"> 439 | <Platform Name="iOSDevice32"> 440 | <Operation>1</Operation> 441 | </Platform> 442 | <Platform Name="iOSDevice64"> 443 | <Operation>1</Operation> 444 | </Platform> 445 | <Platform Name="iOSSimulator"> 446 | <Operation>1</Operation> 447 | </Platform> 448 | </DeployClass> 449 | <DeployClass Name="iPhone_Launch640"> 450 | <Platform Name="iOSDevice32"> 451 | <Operation>1</Operation> 452 | </Platform> 453 | <Platform Name="iOSDevice64"> 454 | <Operation>1</Operation> 455 | </Platform> 456 | <Platform Name="iOSSimulator"> 457 | <Operation>1</Operation> 458 | </Platform> 459 | </DeployClass> 460 | <DeployClass Name="iPhone_Launch640x1136"> 461 | <Platform Name="iOSDevice32"> 462 | <Operation>1</Operation> 463 | </Platform> 464 | <Platform Name="iOSDevice64"> 465 | <Operation>1</Operation> 466 | </Platform> 467 | <Platform Name="iOSSimulator"> 468 | <Operation>1</Operation> 469 | </Platform> 470 | </DeployClass> 471 | <DeployClass Name="ProjectAndroidManifest"> 472 | <Platform Name="Android"> 473 | <Operation>1</Operation> 474 | </Platform> 475 | </DeployClass> 476 | <DeployClass Name="ProjectiOSDeviceDebug"> 477 | <Platform Name="iOSDevice32"> 478 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 479 | <Operation>1</Operation> 480 | </Platform> 481 | <Platform Name="iOSDevice64"> 482 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 483 | <Operation>1</Operation> 484 | </Platform> 485 | </DeployClass> 486 | <DeployClass Name="ProjectiOSDeviceResourceRules"> 487 | <Platform Name="iOSDevice32"> 488 | <Operation>1</Operation> 489 | </Platform> 490 | <Platform Name="iOSDevice64"> 491 | <Operation>1</Operation> 492 | </Platform> 493 | </DeployClass> 494 | <DeployClass Name="ProjectiOSEntitlements"> 495 | <Platform Name="iOSDevice32"> 496 | <RemoteDir>..\</RemoteDir> 497 | <Operation>1</Operation> 498 | </Platform> 499 | <Platform Name="iOSDevice64"> 500 | <RemoteDir>..\</RemoteDir> 501 | <Operation>1</Operation> 502 | </Platform> 503 | </DeployClass> 504 | <DeployClass Name="ProjectiOSInfoPList"> 505 | <Platform Name="iOSDevice32"> 506 | <Operation>1</Operation> 507 | </Platform> 508 | <Platform Name="iOSDevice64"> 509 | <Operation>1</Operation> 510 | </Platform> 511 | <Platform Name="iOSSimulator"> 512 | <Operation>1</Operation> 513 | </Platform> 514 | </DeployClass> 515 | <DeployClass Name="ProjectiOSResource"> 516 | <Platform Name="iOSDevice32"> 517 | <Operation>1</Operation> 518 | </Platform> 519 | <Platform Name="iOSDevice64"> 520 | <Operation>1</Operation> 521 | </Platform> 522 | <Platform Name="iOSSimulator"> 523 | <Operation>1</Operation> 524 | </Platform> 525 | </DeployClass> 526 | <DeployClass Name="ProjectOSXEntitlements"> 527 | <Platform Name="OSX32"> 528 | <RemoteDir>..\</RemoteDir> 529 | <Operation>1</Operation> 530 | </Platform> 531 | </DeployClass> 532 | <DeployClass Name="ProjectOSXInfoPList"> 533 | <Platform Name="OSX32"> 534 | <RemoteDir>Contents</RemoteDir> 535 | <Operation>1</Operation> 536 | </Platform> 537 | </DeployClass> 538 | <DeployClass Name="ProjectOSXResource"> 539 | <Platform Name="OSX32"> 540 | <RemoteDir>Contents\Resources</RemoteDir> 541 | <Operation>1</Operation> 542 | </Platform> 543 | </DeployClass> 544 | <DeployClass Required="true" Name="ProjectOutput"> 545 | <Platform Name="Android"> 546 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 547 | <Operation>1</Operation> 548 | </Platform> 549 | <Platform Name="iOSDevice32"> 550 | <Operation>1</Operation> 551 | </Platform> 552 | <Platform Name="iOSDevice64"> 553 | <Operation>1</Operation> 554 | </Platform> 555 | <Platform Name="iOSSimulator"> 556 | <Operation>1</Operation> 557 | </Platform> 558 | <Platform Name="Linux64"> 559 | <Operation>1</Operation> 560 | </Platform> 561 | <Platform Name="OSX32"> 562 | <RemoteDir>Contents\MacOS</RemoteDir> 563 | <Operation>1</Operation> 564 | </Platform> 565 | <Platform Name="Win32"> 566 | <Operation>0</Operation> 567 | </Platform> 568 | </DeployClass> 569 | <DeployClass Name="ProjectUWPManifest"> 570 | <Platform Name="Win32"> 571 | <Operation>1</Operation> 572 | </Platform> 573 | <Platform Name="Win64"> 574 | <Operation>1</Operation> 575 | </Platform> 576 | </DeployClass> 577 | <DeployClass Name="UWP_DelphiLogo150"> 578 | <Platform Name="Win32"> 579 | <RemoteDir>Assets</RemoteDir> 580 | <Operation>1</Operation> 581 | </Platform> 582 | <Platform Name="Win64"> 583 | <RemoteDir>Assets</RemoteDir> 584 | <Operation>1</Operation> 585 | </Platform> 586 | </DeployClass> 587 | <DeployClass Name="UWP_DelphiLogo44"> 588 | <Platform Name="Win32"> 589 | <RemoteDir>Assets</RemoteDir> 590 | <Operation>1</Operation> 591 | </Platform> 592 | <Platform Name="Win64"> 593 | <RemoteDir>Assets</RemoteDir> 594 | <Operation>1</Operation> 595 | </Platform> 596 | </DeployClass> 597 | <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> 598 | <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/> 599 | <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> 600 | <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/> 601 | <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/> 602 | <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/> 603 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> 604 | <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> 605 | </Deployment> 606 | <Platforms> 607 | <Platform value="Android">False</Platform> 608 | <Platform value="iOSDevice32">False</Platform> 609 | <Platform value="iOSDevice64">False</Platform> 610 | <Platform value="iOSSimulator">False</Platform> 611 | <Platform value="Linux64">False</Platform> 612 | <Platform value="OSX32">False</Platform> 613 | <Platform value="Win32">True</Platform> 614 | <Platform value="Win64">False</Platform> 615 | </Platforms> 616 | </BorlandProject> 617 | <ProjectFileVersion>12</ProjectFileVersion> 618 | </ProjectExtensions> 619 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 620 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 621 | <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/> 622 | </Project> 623 | -------------------------------------------------------------------------------- /samples/ORMRestServerDemo/source/win32/HTTPSocket/ServerHTTPSocket.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{9AACF2F3-ACA0-4402-81FC-7E77DC392FA8}</ProjectGuid> 4 | <ProjectVersion>18.3</ProjectVersion> 5 | <FrameworkType>None</FrameworkType> 6 | <MainSource>ServerHTTPSocket.dpr</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win64</Platform> 10 | <TargetedPlatforms>3</TargetedPlatforms> 11 | <AppType>Console</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''"> 17 | <Base_Android>true</Base_Android> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Base)'=='true') or '$(Base_iOSDevice32)'!=''"> 22 | <Base_iOSDevice32>true</Base_iOSDevice32> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''"> 27 | <Base_iOSDevice64>true</Base_iOSDevice64> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Base)'=='true') or '$(Base_iOSSimulator)'!=''"> 32 | <Base_iOSSimulator>true</Base_iOSSimulator> 33 | <CfgParent>Base</CfgParent> 34 | <Base>true</Base> 35 | </PropertyGroup> 36 | <PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''"> 37 | <Base_OSX32>true</Base_OSX32> 38 | <CfgParent>Base</CfgParent> 39 | <Base>true</Base> 40 | </PropertyGroup> 41 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 42 | <Base_Win32>true</Base_Win32> 43 | <CfgParent>Base</CfgParent> 44 | <Base>true</Base> 45 | </PropertyGroup> 46 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''"> 47 | <Base_Win64>true</Base_Win64> 48 | <CfgParent>Base</CfgParent> 49 | <Base>true</Base> 50 | </PropertyGroup> 51 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 52 | <Cfg_1>true</Cfg_1> 53 | <CfgParent>Base</CfgParent> 54 | <Base>true</Base> 55 | </PropertyGroup> 56 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 57 | <Cfg_1_Win32>true</Cfg_1_Win32> 58 | <CfgParent>Cfg_1</CfgParent> 59 | <Cfg_1>true</Cfg_1> 60 | <Base>true</Base> 61 | </PropertyGroup> 62 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 63 | <Cfg_2>true</Cfg_2> 64 | <CfgParent>Base</CfgParent> 65 | <Base>true</Base> 66 | </PropertyGroup> 67 | <PropertyGroup Condition="'$(Base)'!=''"> 68 | <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> 69 | <DCC_FrameworkPath>..\..\..\bin\$(Platform)\$(Config);$(DCC_FrameworkPath)</DCC_FrameworkPath> 70 | <VerInfo_Locale>3082</VerInfo_Locale> 71 | <DCC_DcpOutput>..\..\..\bin\$(Platform)\$(Config)</DCC_DcpOutput> 72 | <DCC_UnitSearchPath>..\..\common\;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> 73 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace> 74 | <SanitizedProjectName>ServerHTTPSocket</SanitizedProjectName> 75 | <DCC_DcuOutput>..\..\..\bin\$(Platform)\$(Config)\dcu</DCC_DcuOutput> 76 | <DCC_ExeOutput>..\..\..\bin\$(Platform)\$(Config)</DCC_ExeOutput> 77 | <DCC_E>false</DCC_E> 78 | <DCC_N>false</DCC_N> 79 | <DCC_S>false</DCC_S> 80 | <DCC_F>false</DCC_F> 81 | <DCC_K>false</DCC_K> 82 | </PropertyGroup> 83 | <PropertyGroup Condition="'$(Base_Android)'!=''"> 84 | <Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72> 85 | <Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96> 86 | <Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36> 87 | <Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144> 88 | <Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470> 89 | <Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48> 90 | <Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960> 91 | <Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426> 92 | <Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640> 93 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;rtl;DbxClientDriver;CustomIPTransport;bindcomp;CoolTrayIcon_D210_XE7;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage> 94 | <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.dex.jar</EnabledSysJars> 95 | </PropertyGroup> 96 | <PropertyGroup Condition="'$(Base_iOSDevice32)'!=''"> 97 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 98 | </PropertyGroup> 99 | <PropertyGroup Condition="'$(Base_iOSDevice64)'!=''"> 100 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;rtl;DbxClientDriver;CustomIPTransport;TMSFMXPackPkgDXE10;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 101 | </PropertyGroup> 102 | <PropertyGroup Condition="'$(Base_iOSSimulator)'!=''"> 103 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 104 | </PropertyGroup> 105 | <PropertyGroup Condition="'$(Base_OSX32)'!=''"> 106 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;inetdb;FmxTeeUI;FireDACIBDriver;fmx;fmxdae;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;fmxobj;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 107 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 108 | </PropertyGroup> 109 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 110 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 111 | <VerInfo_Locale>1033</VerInfo_Locale> 112 | <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44> 113 | <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150> 114 | <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> 115 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 116 | <BT_BuildType>Debug</BT_BuildType> 117 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;OmniThreadLibraryRuntime;UbuntuProgressPackage;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;svnui;JvGlobus;advchartdedxe10;FireDACADSDriver;JvPluginSystem;JvMM;advchartdxe10;vcltouch;JvBands;vcldb;bindcompfmx;svn;Intraweb;JvJans;JvNet;inetdb;JvAppFrm;EssentialsDR;FmxTeeUI;JvDotNetCtrls;AbbreviaVCLD;FireDACIBDriver;fmx;fmxdae;frx24;JvWizards;tmsexdXE10;dbexpress;IndyCore;vclx;JvPageComps;dsnap;FireDACCommon;JvDB;RESTBackendComponents;VCLRESTComponents;soapserver;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;CloudService;JvCmp;FireDACMySQLDriver;JvHMI;vcwdedXE10;FireDACCommonODBC;FireDACCommonDriver;LockBoxDR;inet;IndyIPCommon;bindcompdbx;GR32_D;JvCustom;vcl;IndyIPServer;JvXPCtrls;PngComponents;IndySystem;tmsxlsdXE10;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;madBasic_;TeeDB;FireDAC;OtherControls;Jcl;JvCore;vcwdXE10;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;FMXTee;SevenZippro;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;JvManagedThreads;Tee;xmlrtl;soapmidas;JvTimeFramework;fmxobj;vclwinx;GR32_R;rtl;DbxClientDriver;frxTee24;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;TMSFMXPackPkgDXE10;bindcomp;appanalytics;CoolTrayIcon_D210_XE7;tmswizdXE10;IndyIPClient;bindcompvcl;frxe24;TeeUI;JvDocking;dbxcds;VclSmp;KernowSoftwareFMX;adortl;JvPascalInterpreter;JclVcl;frxDB24;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;JvControls;JvPrintPreview;Analog_XE7;JclContainers;tmsdXE10;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 118 | </PropertyGroup> 119 | <PropertyGroup Condition="'$(Base_Win64)'!=''"> 120 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace> 121 | <VerInfo_Locale>1033</VerInfo_Locale> 122 | <BT_BuildType>Debug</BT_BuildType> 123 | <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150> 124 | <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44> 125 | <DCC_ConsoleTarget>true</DCC_ConsoleTarget> 126 | <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;vclactnband;vclFireDAC;tethering;FireDACADSDriver;advchartdxe10;vcltouch;vcldb;bindcompfmx;Intraweb;inetdb;EssentialsDR;FmxTeeUI;AbbreviaVCLD;FireDACIBDriver;fmx;fmxdae;tmsexdXE10;dbexpress;IndyCore;vclx;dsnap;FireDACCommon;RESTBackendComponents;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;PngComponents;IndySystem;dsnapcon;FireDACMSAccDriver;fmxFireDAC;vclimg;TeeDB;FireDAC;vcwdXE10;FireDACSqliteDriver;FireDACPgDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;xmlrtl;soapmidas;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;tmsdXE10;fmxase;$(DCC_UsePackage)</DCC_UsePackage> 127 | </PropertyGroup> 128 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 129 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 130 | <DCC_DebugDCUs>true</DCC_DebugDCUs> 131 | <DCC_Optimize>false</DCC_Optimize> 132 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 133 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 134 | <DCC_RemoteDebug>true</DCC_RemoteDebug> 135 | </PropertyGroup> 136 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 137 | <VerInfo_Locale>1033</VerInfo_Locale> 138 | <Manifest_File>(None)</Manifest_File> 139 | <DCC_RemoteDebug>false</DCC_RemoteDebug> 140 | </PropertyGroup> 141 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 142 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 143 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 144 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 145 | <DCC_DebugInformation>0</DCC_DebugInformation> 146 | </PropertyGroup> 147 | <ItemGroup> 148 | <DelphiCompile Include="$(MainSource)"> 149 | <MainSource>MainSource</MainSource> 150 | </DelphiCompile> 151 | <BuildConfiguration Include="Release"> 152 | <Key>Cfg_2</Key> 153 | <CfgParent>Base</CfgParent> 154 | </BuildConfiguration> 155 | <BuildConfiguration Include="Base"> 156 | <Key>Base</Key> 157 | </BuildConfiguration> 158 | <BuildConfiguration Include="Debug"> 159 | <Key>Cfg_1</Key> 160 | <CfgParent>Base</CfgParent> 161 | </BuildConfiguration> 162 | </ItemGroup> 163 | <ProjectExtensions> 164 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 165 | <Borland.ProjectType>Application</Borland.ProjectType> 166 | <BorlandProject> 167 | <Delphi.Personality> 168 | <Source> 169 | <Source Name="MainSource">ServerHTTPSocket.dpr</Source> 170 | </Source> 171 | <Excluded_Packages> 172 | <Excluded_Packages Name="D:\Delphi\LibsRAD10\TnTrayIcon\nTrayIcon.bpl">(untitled)</Excluded_Packages> 173 | <Excluded_Packages Name="$(BDSBIN)\bcboffice2k240.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages> 174 | <Excluded_Packages Name="$(BDSBIN)\bcbofficexp240.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages> 175 | <Excluded_Packages Name="$(BDSBIN)\dcloffice2k240.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> 176 | <Excluded_Packages Name="$(BDSBIN)\dclofficexp240.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> 177 | </Excluded_Packages> 178 | </Delphi.Personality> 179 | <Deployment Version="3"> 180 | <DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule"> 181 | <Platform Name="OSX32"> 182 | <Overwrite>true</Overwrite> 183 | </Platform> 184 | </DeployFile> 185 | <DeployFile LocalName="..\..\..\bin\Win64\Debug\ServerHTTPSocket.rsm" Configuration="Debug" Class="DebugSymbols"> 186 | <Platform Name="Win64"> 187 | <RemoteName>ServerHTTPSocket.rsm</RemoteName> 188 | <Overwrite>true</Overwrite> 189 | </Platform> 190 | </DeployFile> 191 | <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule"> 192 | <Platform Name="iOSSimulator"> 193 | <Overwrite>true</Overwrite> 194 | </Platform> 195 | </DeployFile> 196 | <DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule"> 197 | <Platform Name="iOSSimulator"> 198 | <Overwrite>true</Overwrite> 199 | </Platform> 200 | </DeployFile> 201 | <DeployFile LocalName="Win32\Debug\ServerHTTPSocket.exe" Configuration="Debug" Class="ProjectOutput"> 202 | <Platform Name="Win32"> 203 | <RemoteName>ServerHTTPSocket.exe</RemoteName> 204 | <Overwrite>true</Overwrite> 205 | </Platform> 206 | </DeployFile> 207 | <DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule"> 208 | <Platform Name="OSX32"> 209 | <Overwrite>true</Overwrite> 210 | </Platform> 211 | </DeployFile> 212 | <DeployFile LocalName="..\..\..\bin\Win64\Debug\ServerHTTPSocket.exe" Configuration="Debug" Class="ProjectOutput"> 213 | <Platform Name="Win64"> 214 | <RemoteName>ServerHTTPSocket.exe</RemoteName> 215 | <Overwrite>true</Overwrite> 216 | </Platform> 217 | </DeployFile> 218 | <DeployClass Name="AdditionalDebugSymbols"> 219 | <Platform Name="iOSSimulator"> 220 | <Operation>1</Operation> 221 | </Platform> 222 | <Platform Name="OSX32"> 223 | <RemoteDir>Contents\MacOS</RemoteDir> 224 | <Operation>1</Operation> 225 | </Platform> 226 | <Platform Name="Win32"> 227 | <RemoteDir>Contents\MacOS</RemoteDir> 228 | <Operation>0</Operation> 229 | </Platform> 230 | </DeployClass> 231 | <DeployClass Name="AndroidClassesDexFile"> 232 | <Platform Name="Android"> 233 | <RemoteDir>classes</RemoteDir> 234 | <Operation>1</Operation> 235 | </Platform> 236 | </DeployClass> 237 | <DeployClass Name="AndroidGDBServer"> 238 | <Platform Name="Android"> 239 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 240 | <Operation>1</Operation> 241 | </Platform> 242 | </DeployClass> 243 | <DeployClass Name="AndroidLibnativeArmeabiFile"> 244 | <Platform Name="Android"> 245 | <RemoteDir>library\lib\armeabi</RemoteDir> 246 | <Operation>1</Operation> 247 | </Platform> 248 | </DeployClass> 249 | <DeployClass Name="AndroidLibnativeMipsFile"> 250 | <Platform Name="Android"> 251 | <RemoteDir>library\lib\mips</RemoteDir> 252 | <Operation>1</Operation> 253 | </Platform> 254 | </DeployClass> 255 | <DeployClass Name="AndroidServiceOutput"> 256 | <Platform Name="Android"> 257 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 258 | <Operation>1</Operation> 259 | </Platform> 260 | </DeployClass> 261 | <DeployClass Name="AndroidSplashImageDef"> 262 | <Platform Name="Android"> 263 | <RemoteDir>res\drawable</RemoteDir> 264 | <Operation>1</Operation> 265 | </Platform> 266 | </DeployClass> 267 | <DeployClass Name="AndroidSplashStyles"> 268 | <Platform Name="Android"> 269 | <RemoteDir>res\values</RemoteDir> 270 | <Operation>1</Operation> 271 | </Platform> 272 | </DeployClass> 273 | <DeployClass Name="Android_DefaultAppIcon"> 274 | <Platform Name="Android"> 275 | <RemoteDir>res\drawable</RemoteDir> 276 | <Operation>1</Operation> 277 | </Platform> 278 | </DeployClass> 279 | <DeployClass Name="Android_LauncherIcon144"> 280 | <Platform Name="Android"> 281 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> 282 | <Operation>1</Operation> 283 | </Platform> 284 | </DeployClass> 285 | <DeployClass Name="Android_LauncherIcon36"> 286 | <Platform Name="Android"> 287 | <RemoteDir>res\drawable-ldpi</RemoteDir> 288 | <Operation>1</Operation> 289 | </Platform> 290 | </DeployClass> 291 | <DeployClass Name="Android_LauncherIcon48"> 292 | <Platform Name="Android"> 293 | <RemoteDir>res\drawable-mdpi</RemoteDir> 294 | <Operation>1</Operation> 295 | </Platform> 296 | </DeployClass> 297 | <DeployClass Name="Android_LauncherIcon72"> 298 | <Platform Name="Android"> 299 | <RemoteDir>res\drawable-hdpi</RemoteDir> 300 | <Operation>1</Operation> 301 | </Platform> 302 | </DeployClass> 303 | <DeployClass Name="Android_LauncherIcon96"> 304 | <Platform Name="Android"> 305 | <RemoteDir>res\drawable-xhdpi</RemoteDir> 306 | <Operation>1</Operation> 307 | </Platform> 308 | </DeployClass> 309 | <DeployClass Name="Android_SplashImage426"> 310 | <Platform Name="Android"> 311 | <RemoteDir>res\drawable-small</RemoteDir> 312 | <Operation>1</Operation> 313 | </Platform> 314 | </DeployClass> 315 | <DeployClass Name="Android_SplashImage470"> 316 | <Platform Name="Android"> 317 | <RemoteDir>res\drawable-normal</RemoteDir> 318 | <Operation>1</Operation> 319 | </Platform> 320 | </DeployClass> 321 | <DeployClass Name="Android_SplashImage640"> 322 | <Platform Name="Android"> 323 | <RemoteDir>res\drawable-large</RemoteDir> 324 | <Operation>1</Operation> 325 | </Platform> 326 | </DeployClass> 327 | <DeployClass Name="Android_SplashImage960"> 328 | <Platform Name="Android"> 329 | <RemoteDir>res\drawable-xlarge</RemoteDir> 330 | <Operation>1</Operation> 331 | </Platform> 332 | </DeployClass> 333 | <DeployClass Name="DebugSymbols"> 334 | <Platform Name="iOSSimulator"> 335 | <Operation>1</Operation> 336 | </Platform> 337 | <Platform Name="OSX32"> 338 | <RemoteDir>Contents\MacOS</RemoteDir> 339 | <Operation>1</Operation> 340 | </Platform> 341 | <Platform Name="Win32"> 342 | <Operation>0</Operation> 343 | </Platform> 344 | </DeployClass> 345 | <DeployClass Name="DependencyFramework"> 346 | <Platform Name="OSX32"> 347 | <RemoteDir>Contents\MacOS</RemoteDir> 348 | <Operation>1</Operation> 349 | <Extensions>.framework</Extensions> 350 | </Platform> 351 | <Platform Name="Win32"> 352 | <Operation>0</Operation> 353 | </Platform> 354 | </DeployClass> 355 | <DeployClass Name="DependencyModule"> 356 | <Platform Name="iOSDevice32"> 357 | <Operation>1</Operation> 358 | <Extensions>.dylib</Extensions> 359 | </Platform> 360 | <Platform Name="iOSDevice64"> 361 | <Operation>1</Operation> 362 | <Extensions>.dylib</Extensions> 363 | </Platform> 364 | <Platform Name="iOSSimulator"> 365 | <Operation>1</Operation> 366 | <Extensions>.dylib</Extensions> 367 | </Platform> 368 | <Platform Name="OSX32"> 369 | <RemoteDir>Contents\MacOS</RemoteDir> 370 | <Operation>1</Operation> 371 | <Extensions>.dylib</Extensions> 372 | </Platform> 373 | <Platform Name="Win32"> 374 | <Operation>0</Operation> 375 | <Extensions>.dll;.bpl</Extensions> 376 | </Platform> 377 | </DeployClass> 378 | <DeployClass Required="true" Name="DependencyPackage"> 379 | <Platform Name="iOSDevice32"> 380 | <Operation>1</Operation> 381 | <Extensions>.dylib</Extensions> 382 | </Platform> 383 | <Platform Name="iOSDevice64"> 384 | <Operation>1</Operation> 385 | <Extensions>.dylib</Extensions> 386 | </Platform> 387 | <Platform Name="iOSSimulator"> 388 | <Operation>1</Operation> 389 | <Extensions>.dylib</Extensions> 390 | </Platform> 391 | <Platform Name="OSX32"> 392 | <RemoteDir>Contents\MacOS</RemoteDir> 393 | <Operation>1</Operation> 394 | <Extensions>.dylib</Extensions> 395 | </Platform> 396 | <Platform Name="Win32"> 397 | <Operation>0</Operation> 398 | <Extensions>.bpl</Extensions> 399 | </Platform> 400 | </DeployClass> 401 | <DeployClass Name="File"> 402 | <Platform Name="Android"> 403 | <Operation>0</Operation> 404 | </Platform> 405 | <Platform Name="iOSDevice32"> 406 | <Operation>0</Operation> 407 | </Platform> 408 | <Platform Name="iOSDevice64"> 409 | <Operation>0</Operation> 410 | </Platform> 411 | <Platform Name="iOSSimulator"> 412 | <Operation>0</Operation> 413 | </Platform> 414 | <Platform Name="OSX32"> 415 | <RemoteDir>Contents\Resources\StartUp\</RemoteDir> 416 | <Operation>0</Operation> 417 | </Platform> 418 | <Platform Name="Win32"> 419 | <Operation>0</Operation> 420 | </Platform> 421 | </DeployClass> 422 | <DeployClass Name="iPad_Launch1024"> 423 | <Platform Name="iOSDevice32"> 424 | <Operation>1</Operation> 425 | </Platform> 426 | <Platform Name="iOSDevice64"> 427 | <Operation>1</Operation> 428 | </Platform> 429 | <Platform Name="iOSSimulator"> 430 | <Operation>1</Operation> 431 | </Platform> 432 | </DeployClass> 433 | <DeployClass Name="iPad_Launch1536"> 434 | <Platform Name="iOSDevice32"> 435 | <Operation>1</Operation> 436 | </Platform> 437 | <Platform Name="iOSDevice64"> 438 | <Operation>1</Operation> 439 | </Platform> 440 | <Platform Name="iOSSimulator"> 441 | <Operation>1</Operation> 442 | </Platform> 443 | </DeployClass> 444 | <DeployClass Name="iPad_Launch2048"> 445 | <Platform Name="iOSDevice32"> 446 | <Operation>1</Operation> 447 | </Platform> 448 | <Platform Name="iOSDevice64"> 449 | <Operation>1</Operation> 450 | </Platform> 451 | <Platform Name="iOSSimulator"> 452 | <Operation>1</Operation> 453 | </Platform> 454 | </DeployClass> 455 | <DeployClass Name="iPad_Launch768"> 456 | <Platform Name="iOSDevice32"> 457 | <Operation>1</Operation> 458 | </Platform> 459 | <Platform Name="iOSDevice64"> 460 | <Operation>1</Operation> 461 | </Platform> 462 | <Platform Name="iOSSimulator"> 463 | <Operation>1</Operation> 464 | </Platform> 465 | </DeployClass> 466 | <DeployClass Name="iPhone_Launch320"> 467 | <Platform Name="iOSDevice32"> 468 | <Operation>1</Operation> 469 | </Platform> 470 | <Platform Name="iOSDevice64"> 471 | <Operation>1</Operation> 472 | </Platform> 473 | <Platform Name="iOSSimulator"> 474 | <Operation>1</Operation> 475 | </Platform> 476 | </DeployClass> 477 | <DeployClass Name="iPhone_Launch640"> 478 | <Platform Name="iOSDevice32"> 479 | <Operation>1</Operation> 480 | </Platform> 481 | <Platform Name="iOSDevice64"> 482 | <Operation>1</Operation> 483 | </Platform> 484 | <Platform Name="iOSSimulator"> 485 | <Operation>1</Operation> 486 | </Platform> 487 | </DeployClass> 488 | <DeployClass Name="iPhone_Launch640x1136"> 489 | <Platform Name="iOSDevice32"> 490 | <Operation>1</Operation> 491 | </Platform> 492 | <Platform Name="iOSDevice64"> 493 | <Operation>1</Operation> 494 | </Platform> 495 | <Platform Name="iOSSimulator"> 496 | <Operation>1</Operation> 497 | </Platform> 498 | </DeployClass> 499 | <DeployClass Name="ProjectAndroidManifest"> 500 | <Platform Name="Android"> 501 | <Operation>1</Operation> 502 | </Platform> 503 | </DeployClass> 504 | <DeployClass Name="ProjectiOSDeviceDebug"> 505 | <Platform Name="iOSDevice32"> 506 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 507 | <Operation>1</Operation> 508 | </Platform> 509 | <Platform Name="iOSDevice64"> 510 | <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir> 511 | <Operation>1</Operation> 512 | </Platform> 513 | </DeployClass> 514 | <DeployClass Name="ProjectiOSDeviceResourceRules"> 515 | <Platform Name="iOSDevice32"> 516 | <Operation>1</Operation> 517 | </Platform> 518 | <Platform Name="iOSDevice64"> 519 | <Operation>1</Operation> 520 | </Platform> 521 | </DeployClass> 522 | <DeployClass Name="ProjectiOSEntitlements"> 523 | <Platform Name="iOSDevice32"> 524 | <RemoteDir>..\</RemoteDir> 525 | <Operation>1</Operation> 526 | </Platform> 527 | <Platform Name="iOSDevice64"> 528 | <RemoteDir>..\</RemoteDir> 529 | <Operation>1</Operation> 530 | </Platform> 531 | </DeployClass> 532 | <DeployClass Name="ProjectiOSInfoPList"> 533 | <Platform Name="iOSDevice32"> 534 | <Operation>1</Operation> 535 | </Platform> 536 | <Platform Name="iOSDevice64"> 537 | <Operation>1</Operation> 538 | </Platform> 539 | <Platform Name="iOSSimulator"> 540 | <Operation>1</Operation> 541 | </Platform> 542 | </DeployClass> 543 | <DeployClass Name="ProjectiOSResource"> 544 | <Platform Name="iOSDevice32"> 545 | <Operation>1</Operation> 546 | </Platform> 547 | <Platform Name="iOSDevice64"> 548 | <Operation>1</Operation> 549 | </Platform> 550 | <Platform Name="iOSSimulator"> 551 | <Operation>1</Operation> 552 | </Platform> 553 | </DeployClass> 554 | <DeployClass Name="ProjectOSXEntitlements"> 555 | <Platform Name="OSX32"> 556 | <RemoteDir>..\</RemoteDir> 557 | <Operation>1</Operation> 558 | </Platform> 559 | </DeployClass> 560 | <DeployClass Name="ProjectOSXInfoPList"> 561 | <Platform Name="OSX32"> 562 | <RemoteDir>Contents</RemoteDir> 563 | <Operation>1</Operation> 564 | </Platform> 565 | </DeployClass> 566 | <DeployClass Name="ProjectOSXResource"> 567 | <Platform Name="OSX32"> 568 | <RemoteDir>Contents\Resources</RemoteDir> 569 | <Operation>1</Operation> 570 | </Platform> 571 | </DeployClass> 572 | <DeployClass Required="true" Name="ProjectOutput"> 573 | <Platform Name="Android"> 574 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> 575 | <Operation>1</Operation> 576 | </Platform> 577 | <Platform Name="iOSDevice32"> 578 | <Operation>1</Operation> 579 | </Platform> 580 | <Platform Name="iOSDevice64"> 581 | <Operation>1</Operation> 582 | </Platform> 583 | <Platform Name="iOSSimulator"> 584 | <Operation>1</Operation> 585 | </Platform> 586 | <Platform Name="Linux64"> 587 | <Operation>1</Operation> 588 | </Platform> 589 | <Platform Name="OSX32"> 590 | <RemoteDir>Contents\MacOS</RemoteDir> 591 | <Operation>1</Operation> 592 | </Platform> 593 | <Platform Name="Win32"> 594 | <Operation>0</Operation> 595 | </Platform> 596 | </DeployClass> 597 | <DeployClass Name="ProjectUWPManifest"> 598 | <Platform Name="Win32"> 599 | <Operation>1</Operation> 600 | </Platform> 601 | <Platform Name="Win64"> 602 | <Operation>1</Operation> 603 | </Platform> 604 | </DeployClass> 605 | <DeployClass Name="UWP_DelphiLogo150"> 606 | <Platform Name="Win32"> 607 | <RemoteDir>Assets</RemoteDir> 608 | <Operation>1</Operation> 609 | </Platform> 610 | <Platform Name="Win64"> 611 | <RemoteDir>Assets</RemoteDir> 612 | <Operation>1</Operation> 613 | </Platform> 614 | </DeployClass> 615 | <DeployClass Name="UWP_DelphiLogo44"> 616 | <Platform Name="Win32"> 617 | <RemoteDir>Assets</RemoteDir> 618 | <Operation>1</Operation> 619 | </Platform> 620 | <Platform Name="Win64"> 621 | <RemoteDir>Assets</RemoteDir> 622 | <Operation>1</Operation> 623 | </Platform> 624 | </DeployClass> 625 | <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> 626 | <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/> 627 | <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> 628 | <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/> 629 | <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/> 630 | <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/> 631 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> 632 | <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> 633 | </Deployment> 634 | <Platforms> 635 | <Platform value="Android">False</Platform> 636 | <Platform value="iOSDevice32">False</Platform> 637 | <Platform value="iOSDevice64">False</Platform> 638 | <Platform value="iOSSimulator">False</Platform> 639 | <Platform value="Linux64">False</Platform> 640 | <Platform value="OSX32">False</Platform> 641 | <Platform value="Win32">True</Platform> 642 | <Platform value="Win64">True</Platform> 643 | </Platforms> 644 | </BorlandProject> 645 | <ProjectFileVersion>12</ProjectFileVersion> 646 | </ProjectExtensions> 647 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 648 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 649 | <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/> 650 | </Project> 651 | --------------------------------------------------------------------------------