mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 15:55:54 +01:00
NEW APACHE SAMPLE
This commit is contained in:
parent
842dfd60cf
commit
b53c4345c6
62
samples/apachemodule/MainDataModuleUnit.dfm
Normal file
62
samples/apachemodule/MainDataModuleUnit.dfm
Normal file
@ -0,0 +1,62 @@
|
||||
object WineCellarDataModule: TWineCellarDataModule
|
||||
OldCreateOrder = False
|
||||
Height = 211
|
||||
Width = 336
|
||||
object Connection: TFDConnection
|
||||
Params.Strings = (
|
||||
'Database=C:\DEV\DMVCFramework\samples\winecellar\WINES.FDB'
|
||||
'User_Name=sysdba'
|
||||
'Password=masterkey'
|
||||
'DriverID=FB')
|
||||
ConnectedStoredUsage = [auDesignTime]
|
||||
Connected = True
|
||||
LoginPrompt = False
|
||||
BeforeConnect = ConnectionBeforeConnect
|
||||
Left = 72
|
||||
Top = 48
|
||||
end
|
||||
object qryWines: TFDQuery
|
||||
Active = True
|
||||
Connection = Connection
|
||||
UpdateObject = updWines
|
||||
SQL.Strings = (
|
||||
'SELECT * FROM WINE')
|
||||
Left = 168
|
||||
Top = 48
|
||||
end
|
||||
object updWines: TFDUpdateSQL
|
||||
Connection = Connection
|
||||
InsertSQL.Strings = (
|
||||
'INSERT INTO WINE'
|
||||
'(NAME, "YEAR", GRAPES, COUNTRY, REGION, '
|
||||
' DESCRIPTION, PICTURE)'
|
||||
|
||||
'VALUES (:NEW_NAME, :NEW_YEAR, :NEW_GRAPES, :NEW_COUNTRY, :NEW_RE' +
|
||||
'GION, '
|
||||
' :NEW_DESCRIPTION, :NEW_PICTURE)')
|
||||
ModifySQL.Strings = (
|
||||
'UPDATE WINE'
|
||||
'SET NAME = :NEW_NAME, "YEAR" = :NEW_YEAR, GRAPES = :NEW_GRAPES, '
|
||||
|
||||
' COUNTRY = :NEW_COUNTRY, REGION = :NEW_REGION, DESCRIPTION = :N' +
|
||||
'EW_DESCRIPTION, '
|
||||
' PICTURE = :NEW_PICTURE'
|
||||
'WHERE ID = :OLD_ID')
|
||||
DeleteSQL.Strings = (
|
||||
'DELETE FROM WINE'
|
||||
'WHERE ID = :OLD_ID')
|
||||
FetchRowSQL.Strings = (
|
||||
|
||||
'SELECT ID, NAME, "YEAR" AS "YEAR", GRAPES, COUNTRY, REGION, DESC' +
|
||||
'RIPTION, '
|
||||
' PICTURE'
|
||||
'FROM WINE'
|
||||
'WHERE ID = :ID')
|
||||
Left = 168
|
||||
Top = 120
|
||||
end
|
||||
object FDPhysFBDriverLink1: TFDPhysFBDriverLink
|
||||
Left = 72
|
||||
Top = 120
|
||||
end
|
||||
end
|
106
samples/apachemodule/MainDataModuleUnit.pas
Normal file
106
samples/apachemodule/MainDataModuleUnit.pas
Normal file
@ -0,0 +1,106 @@
|
||||
unit MainDataModuleUnit;
|
||||
|
||||
interface
|
||||
|
||||
uses System.SysUtils,
|
||||
System.Classes,
|
||||
Data.DBXFirebird,
|
||||
Data.DB,
|
||||
Data.SqlExpr
|
||||
{$IFDEF VER270}
|
||||
, System.JSON
|
||||
{$ELSE}
|
||||
, Data.DBXJSON
|
||||
{$ENDIF}
|
||||
, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
|
||||
FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Comp.Client, FireDAC.Stan.Param,
|
||||
FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Phys.IBBase, FireDAC.Phys.FB;
|
||||
|
||||
type
|
||||
TWineCellarDataModule = class(TDataModule)
|
||||
Connection: TFDConnection;
|
||||
qryWines: TFDQuery;
|
||||
updWines: TFDUpdateSQL;
|
||||
FDPhysFBDriverLink1: TFDPhysFBDriverLink;
|
||||
procedure ConnectionBeforeConnect(Sender: TObject);
|
||||
|
||||
public
|
||||
function GetWineById(id: Integer): TJSONObject;
|
||||
function FindWines(Search: string): TJSONArray;
|
||||
function AddWine(AWine: TJSONObject): TJSONObject;
|
||||
function UpdateWine(Wine: TJSONObject): TJSONObject;
|
||||
function DeleteWine(id: Integer): TJSONObject;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
|
||||
uses System.StrUtils,
|
||||
Data.DBXCommon,
|
||||
ObjectsMappers,
|
||||
WinesBO;
|
||||
|
||||
{ TCellarSM }
|
||||
|
||||
function TWineCellarDataModule.AddWine(AWine: TJSONObject): TJSONObject;
|
||||
var
|
||||
Wine: TWine;
|
||||
begin
|
||||
Wine := Mapper.JSONObjectToObject<TWine>(AWine);
|
||||
try
|
||||
Mapper.ObjectToFDParameters(
|
||||
updWines.Commands[arInsert].Params,
|
||||
Wine,
|
||||
'NEW_');
|
||||
updWines.Commands[arInsert].Execute;
|
||||
finally
|
||||
Wine.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWineCellarDataModule.DeleteWine(id: Integer): TJSONObject;
|
||||
begin
|
||||
updWines.Commands[arDelete].ParamByName('OLD_ID').AsInteger := id;
|
||||
updWines.Commands[arDelete].Execute;
|
||||
end;
|
||||
|
||||
procedure TWineCellarDataModule.ConnectionBeforeConnect(Sender: TObject);
|
||||
begin
|
||||
Connection.Params.Values['Database'] :=
|
||||
{ change this path to be compliant with your system }
|
||||
'C:\DEV\DMVCFramework\samples\winecellar\WINES.FDB';
|
||||
end;
|
||||
|
||||
function TWineCellarDataModule.FindWines(Search: string): TJSONArray;
|
||||
begin
|
||||
if Search.IsEmpty then
|
||||
qryWines.Open('SELECT * FROM wine')
|
||||
else
|
||||
qryWines.Open('SELECT * FROM wine where NAME CONTAINING ?', [Search]);
|
||||
Result := qryWines.AsJSONArray;
|
||||
end;
|
||||
|
||||
function TWineCellarDataModule.GetWineById(id: Integer): TJSONObject;
|
||||
begin
|
||||
qryWines.Open('SELECT * FROM wine where id = ?', [id]);
|
||||
Result := qryWines.AsJSONObject;
|
||||
end;
|
||||
|
||||
function TWineCellarDataModule.UpdateWine(Wine: TJSONObject): TJSONObject;
|
||||
var
|
||||
w: TWine;
|
||||
begin
|
||||
w := Mapper.JSONObjectToObject<TWine>(Wine);
|
||||
try
|
||||
Mapper.ObjectToFDParameters(updWines.Commands[arUpdate].Params, w, 'NEW_');
|
||||
updWines.Commands[arUpdate].Params.ParamByName('OLD_ID').AsInteger := w.id;
|
||||
updWines.Commands[arUpdate].Execute;
|
||||
finally
|
||||
w.Free;
|
||||
end;
|
||||
Result := TJSONObject.Create;
|
||||
end;
|
||||
|
||||
end.
|
14
samples/apachemodule/MainWebModuleUnit.dfm
Normal file
14
samples/apachemodule/MainWebModuleUnit.dfm
Normal file
@ -0,0 +1,14 @@
|
||||
object wm: Twm
|
||||
OldCreateOrder = False
|
||||
OnCreate = WebModuleCreate
|
||||
OnDestroy = WebModuleDestroy
|
||||
Actions = <
|
||||
item
|
||||
Default = True
|
||||
Name = 'DefaultHandler'
|
||||
PathInfo = '/'
|
||||
OnAction = WebModule1DefaultHandlerAction
|
||||
end>
|
||||
Height = 230
|
||||
Width = 415
|
||||
end
|
51
samples/apachemodule/MainWebModuleUnit.pas
Normal file
51
samples/apachemodule/MainWebModuleUnit.pas
Normal file
@ -0,0 +1,51 @@
|
||||
unit MainWebModuleUnit;
|
||||
|
||||
interface
|
||||
|
||||
uses System.SysUtils, System.Classes, Web.HTTPApp, MVCFramework;
|
||||
|
||||
type
|
||||
Twm = class(TWebModule)
|
||||
procedure WebModule1DefaultHandlerAction(Sender: TObject;
|
||||
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
|
||||
procedure WebModuleCreate(Sender: TObject);
|
||||
procedure WebModuleDestroy(Sender: TObject);
|
||||
|
||||
private
|
||||
MVCEngine: TMVCEngine;
|
||||
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
WebModuleClass: TComponentClass = Twm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
WineCellarAppControllerU;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
|
||||
procedure Twm.WebModule1DefaultHandlerAction(Sender: TObject;
|
||||
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
|
||||
begin
|
||||
Response.Content :=
|
||||
'<html><heading/><body>Web Server Application</body></html>';
|
||||
end;
|
||||
|
||||
procedure Twm.WebModuleCreate(Sender: TObject);
|
||||
begin
|
||||
MVCEngine := TMVCEngine.Create(self);
|
||||
MVCEngine.AddController(TWineCellarApp);
|
||||
MVCEngine.Config['document_root'] := '..\..\www';
|
||||
end;
|
||||
|
||||
procedure Twm.WebModuleDestroy(Sender: TObject);
|
||||
begin
|
||||
MVCEngine.Free;
|
||||
end;
|
||||
|
||||
end.
|
12
samples/apachemodule/WebModuleUnit1.dfm
Normal file
12
samples/apachemodule/WebModuleUnit1.dfm
Normal file
@ -0,0 +1,12 @@
|
||||
object WebModule1: TWebModule1
|
||||
OldCreateOrder = False
|
||||
Actions = <
|
||||
item
|
||||
Default = True
|
||||
Name = 'DefaultHandler'
|
||||
PathInfo = '/'
|
||||
OnAction = WebModule1DefaultHandlerAction
|
||||
end>
|
||||
Height = 230
|
||||
Width = 415
|
||||
end
|
88
samples/apachemodule/WebModuleUnit1.pas
Normal file
88
samples/apachemodule/WebModuleUnit1.pas
Normal file
@ -0,0 +1,88 @@
|
||||
unit WebModuleUnit1;
|
||||
|
||||
interface
|
||||
|
||||
uses System.SysUtils, System.Classes, Web.HTTPApp, mvcframework;
|
||||
|
||||
type
|
||||
TWebModule1 = class(TWebModule)
|
||||
procedure WebModule1DefaultHandlerAction(Sender: TObject;
|
||||
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
|
||||
private
|
||||
Engine: TMVCEngine;
|
||||
{ Private declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
WebModuleClass: TComponentClass = TWebModule1;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Winapi.Windows, Web.ApacheHTTP;
|
||||
|
||||
{ %CLASSGROUP 'Vcl.Controls.TControl' }
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
|
||||
function GetAllEnvVars(const Vars: TStrings): Integer;
|
||||
var
|
||||
PEnvVars: PChar; // pointer to start of environment block
|
||||
PEnvEntry: PChar; // pointer to an env string in block
|
||||
begin
|
||||
// Clear the list
|
||||
if Assigned(Vars) then
|
||||
Vars.Clear;
|
||||
// Get reference to environment block for this process
|
||||
PEnvVars := GetEnvironmentStrings;
|
||||
if PEnvVars <> nil then
|
||||
begin
|
||||
// We have a block: extract strings from it
|
||||
// Env strings are #0 separated and list ends with #0#0
|
||||
PEnvEntry := PEnvVars;
|
||||
try
|
||||
while PEnvEntry^ <> #0 do
|
||||
begin
|
||||
if Assigned(Vars) then
|
||||
Vars.Add(PEnvEntry);
|
||||
Inc(PEnvEntry, StrLen(PEnvEntry) + 1);
|
||||
end;
|
||||
// Calculate length of block
|
||||
Result := (PEnvEntry - PEnvVars) + 1;
|
||||
finally
|
||||
// Dispose of the memory block
|
||||
FreeEnvironmentStrings(PEnvVars);
|
||||
end;
|
||||
end
|
||||
else
|
||||
// No block => zero length
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
|
||||
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
|
||||
var
|
||||
sl: TStringList;
|
||||
begin
|
||||
// TApacheRequest(Request).GetFieldByName()
|
||||
// Response.ContentType := 'text/plain';
|
||||
// // Response.Content := GetEnvironmentVariable('HTTP_USER_AGENT');
|
||||
// sl := TStringList.Create;
|
||||
// try
|
||||
// GetAllEnvVars(sl);
|
||||
// Response.Content := sl.Text;
|
||||
// finally
|
||||
// sl.Free;
|
||||
// end;
|
||||
|
||||
Response.Content :=
|
||||
'<html>' +
|
||||
'<head><title>Web Server Application</title></head>' +
|
||||
'<body><h1>APACHE Web Server Application</h1><h3>Proudly built with Delphi XE6</h3></body>' +
|
||||
'</html>';
|
||||
end;
|
||||
|
||||
end.
|
112
samples/apachemodule/WineCellarAppControllerU.pas
Normal file
112
samples/apachemodule/WineCellarAppControllerU.pas
Normal file
@ -0,0 +1,112 @@
|
||||
unit WineCellarAppControllerU;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
MVCFramework,
|
||||
MainDataModuleUnit;
|
||||
|
||||
type
|
||||
|
||||
[MVCPath('/')]
|
||||
TWineCellarApp = class(TMVCController)
|
||||
private
|
||||
dm: TWineCellarDataModule;
|
||||
|
||||
protected
|
||||
procedure OnBeforeAction(Context: TWebContext; const AActionNAme: string;
|
||||
var Handled: Boolean);
|
||||
override;
|
||||
procedure OnAfterAction(Context: TWebContext;
|
||||
const AActionNAme: string); override;
|
||||
|
||||
public
|
||||
[MVCPath('/')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
procedure Index(ctx: TWebContext);
|
||||
|
||||
[MVCPath('/wines')]
|
||||
[MVCHTTPMethod([httpGET])]
|
||||
procedure WinesList(ctx: TWebContext);
|
||||
|
||||
[MVCPath('/wines')]
|
||||
[MVCHTTPMethod([httpPOST])]
|
||||
procedure SaveWine(ctx: TWebContext);
|
||||
|
||||
[MVCPath('/wines/search/($value)')]
|
||||
procedure FindWines(ctx: TWebContext);
|
||||
|
||||
[MVCPath('/wines/($id)')]
|
||||
[MVCHTTPMethod([httpGET, httpDELETE])]
|
||||
procedure WineById(ctx: TWebContext);
|
||||
|
||||
[MVCPath('/wines/($id)')]
|
||||
[MVCHTTPMethod([httpPUT])]
|
||||
procedure UpdateWineById(ctx: TWebContext);
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.SysUtils;
|
||||
|
||||
procedure TWineCellarApp.FindWines(ctx: TWebContext);
|
||||
begin
|
||||
Render(dm.FindWines(ctx.Request.Params['value']));
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.Index(ctx: TWebContext);
|
||||
begin
|
||||
Redirect('/index.html');
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.OnAfterAction(Context: TWebContext;
|
||||
const AActionNAme: string);
|
||||
begin
|
||||
inherited;
|
||||
dm.Free;
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.OnBeforeAction(Context: TWebContext;
|
||||
const AActionNAme: string;
|
||||
var Handled: Boolean);
|
||||
begin
|
||||
inherited;
|
||||
dm := TWineCellarDataModule.Create(nil);
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.SaveWine(ctx: TWebContext);
|
||||
begin
|
||||
dm.AddWine(ctx.Request.BodyAsJSONObject);
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.UpdateWineById(ctx: TWebContext);
|
||||
begin
|
||||
Render(dm.UpdateWine(ctx.Request.BodyAsJSONObject));
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.WineById(ctx: TWebContext);
|
||||
begin
|
||||
// different behaviour according to the request http method
|
||||
case ctx.Request.HTTPMethod of
|
||||
httpDELETE:
|
||||
begin
|
||||
dm.DeleteWine(StrToInt(ctx.Request.Params['id']));
|
||||
Render(200, 'Wine deleted');
|
||||
end;
|
||||
httpGET:
|
||||
begin
|
||||
Render(dm.GetWineById(StrToInt(ctx.Request.Params['id'])));
|
||||
end
|
||||
else
|
||||
raise Exception.Create('Invalid http method for action');
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TWineCellarApp.WinesList(ctx: TWebContext);
|
||||
begin
|
||||
Render(dm.FindWines(''));
|
||||
end;
|
||||
|
||||
end.
|
83
samples/apachemodule/WinesBO.pas
Normal file
83
samples/apachemodule/WinesBO.pas
Normal file
@ -0,0 +1,83 @@
|
||||
unit WinesBO;
|
||||
|
||||
interface
|
||||
|
||||
uses ObjectsMappers;
|
||||
|
||||
type
|
||||
[MapperJSONNaming(JSONNameLowerCase)]
|
||||
TWine = class
|
||||
private
|
||||
FYEAR: string;
|
||||
FNAME: string;
|
||||
FPICTURE: String;
|
||||
FGRAPES: string;
|
||||
FID: integer;
|
||||
FDESCRIPTION: string;
|
||||
FCOUNTRY: string;
|
||||
FREGION: string;
|
||||
procedure SetCOUNTRY(const Value: string);
|
||||
procedure SetDESCRIPTION(const Value: string);
|
||||
procedure SetGRAPES(const Value: string);
|
||||
procedure SetID(const Value: integer);
|
||||
procedure SetNAME(const Value: string);
|
||||
procedure SetPICTURE(const Value: String);
|
||||
procedure SetREGION(const Value: string);
|
||||
procedure SetYEAR(const Value: string);
|
||||
|
||||
public
|
||||
property id: integer read FID write SetID;
|
||||
property name: string read FNAME write SetNAME;
|
||||
property year: string read FYEAR write SetYEAR;
|
||||
property grapes: string read FGRAPES write SetGRAPES;
|
||||
property country: string read FCOUNTRY write SetCOUNTRY;
|
||||
property region: string read FREGION write SetREGION;
|
||||
property description: string read FDESCRIPTION write SetDESCRIPTION;
|
||||
property picture: String read FPICTURE write SetPICTURE;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TWine }
|
||||
|
||||
procedure TWine.SetCOUNTRY(const Value: string);
|
||||
begin
|
||||
FCOUNTRY := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetDESCRIPTION(const Value: string);
|
||||
begin
|
||||
FDESCRIPTION := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetGRAPES(const Value: string);
|
||||
begin
|
||||
FGRAPES := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetID(const Value: integer);
|
||||
begin
|
||||
FID := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetNAME(const Value: string);
|
||||
begin
|
||||
FNAME := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetPICTURE(const Value: String);
|
||||
begin
|
||||
FPICTURE := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetREGION(const Value: string);
|
||||
begin
|
||||
FREGION := Value;
|
||||
end;
|
||||
|
||||
procedure TWine.SetYEAR(const Value: string);
|
||||
begin
|
||||
FYEAR := Value;
|
||||
end;
|
||||
|
||||
end.
|
46
samples/apachemodule/mod_dmvc.dpr
Normal file
46
samples/apachemodule/mod_dmvc.dpr
Normal file
@ -0,0 +1,46 @@
|
||||
library mod_dmvc;
|
||||
|
||||
uses
|
||||
Winapi.ActiveX,
|
||||
System.Win.ComObj,
|
||||
Web.WebBroker,
|
||||
Web.ApacheApp,
|
||||
Web.HTTPD24Impl,
|
||||
MainDataModuleUnit in 'MainDataModuleUnit.pas' {WineCellarDataModule: TDataModule},
|
||||
MainWebModuleUnit in 'MainWebModuleUnit.pas' {wm: TWebModule},
|
||||
WineCellarAppControllerU in 'WineCellarAppControllerU.pas',
|
||||
WinesBO in 'WinesBO.pas';
|
||||
|
||||
{$R *.res}
|
||||
|
||||
// httpd.conf entries:
|
||||
//
|
||||
(*
|
||||
LoadModule dmvc_module modules/mod_dmvc.dll
|
||||
|
||||
<Location /xyz>
|
||||
SetHandler mod_dmvc-handler
|
||||
</Location>
|
||||
*)
|
||||
//
|
||||
// These entries assume that the output directory for this project is the apache/modules directory.
|
||||
//
|
||||
// httpd.conf entries should be different if the project is changed in these ways:
|
||||
// 1. The TApacheModuleData variable name is changed
|
||||
// 2. The project is renamed.
|
||||
// 3. The output directory is not the apache/modules directory
|
||||
//
|
||||
|
||||
// Declare exported variable so that Apache can access this module.
|
||||
var
|
||||
GModuleData: TApacheModuleData;
|
||||
exports
|
||||
GModuleData name 'dmvc_module';
|
||||
|
||||
begin
|
||||
CoInitFlags := COINIT_MULTITHREADED;
|
||||
Web.ApacheApp.InitApplication(@GModuleData);
|
||||
Application.Initialize;
|
||||
Application.WebModuleClass := WebModuleClass;
|
||||
Application.Run;
|
||||
end.
|
142
samples/apachemodule/mod_dmvc.dproj
Normal file
142
samples/apachemodule/mod_dmvc.dproj
Normal file
@ -0,0 +1,142 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{61ADE231-72F2-4E11-8EDD-62C5AFEF0463}</ProjectGuid>
|
||||
<ProjectVersion>15.4</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>mod_dmvc.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Library</AppType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||
<Base_Win64>true</Base_Win64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||
<CfgParent>Cfg_1</CfgParent>
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
|
||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
|
||||
<SanitizedProjectName>mod_dmvc</SanitizedProjectName>
|
||||
<GenDll>true</GenDll>
|
||||
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
|
||||
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
<DCC_UsePackage>FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;SampleListViewMultiDetailAppearancePackage;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;ITDevCon2012AdapterPackage;inetdbbde;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapServer;DataSnapCommon;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DBXMSSQLDriver;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;CodeSiteExpressPkg;DataSnapFireDAC;FireDACDBXDriver;soapserver;inetdbxpress;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;CustomAdaptersMDPackage;FireDACASADriver;bindcompfmx;vcldbx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;inetdb;SampleListViewRatingsAppearancePackage;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;svnui;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;FMXTee;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VclSmp;FireDACMSSQLDriver;FireDAC;DBXInformixDriver;Intraweb;VCLRESTComponents;DataSnapConnectors;DataSnapServerMidas;dsnapcon;DBXFirebirdDriver;SampleGenerator1Package;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;svn;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;bdertl;FireDACMSAccDriver;dbexpress;DataSnapIndy10ServerTransport;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||
<DCC_UsePackage>FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapServer;DataSnapCommon;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DBXMSSQLDriver;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;inetdbxpress;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;inetdb;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;FMXTee;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VclSmp;FireDACMSSQLDriver;FireDAC;DBXInformixDriver;Intraweb;VCLRESTComponents;DataSnapConnectors;DataSnapServerMidas;dsnapcon;DBXFirebirdDriver;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;DataSnapIndy10ServerTransport;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
||||
<DCC_Optimize>false</DCC_Optimize>
|
||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||
<Debugger_RunParams>-X</Debugger_RunParams>
|
||||
<Debugger_HostApplication>C:\Tools\Apache24\bin\httpd.exe</Debugger_HostApplication>
|
||||
<Manifest_File>None</Manifest_File>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<DCC_ExeOutput>C:\Tools\Apache24\modules</DCC_ExeOutput>
|
||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>0</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="$(MainSource)">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="MainDataModuleUnit.pas">
|
||||
<Form>WineCellarDataModule</Form>
|
||||
<FormType>dfm</FormType>
|
||||
<DesignClass>TDataModule</DesignClass>
|
||||
</DCCReference>
|
||||
<DCCReference Include="MainWebModuleUnit.pas">
|
||||
<Form>wm</Form>
|
||||
<FormType>dfm</FormType>
|
||||
<DesignClass>TWebModule</DesignClass>
|
||||
</DCCReference>
|
||||
<DCCReference Include="WineCellarAppControllerU.pas"/>
|
||||
<DCCReference Include="WinesBO.pas"/>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k200.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp200.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k200.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
<Excluded_Packages Name="$(BDSBIN)\dclofficexp200.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||
</Excluded_Packages>
|
||||
<Source>
|
||||
<Source Name="MainSource">mod_dmvc.dpr</Source>
|
||||
</Source>
|
||||
</Delphi.Personality>
|
||||
<Deployment/>
|
||||
<Platforms>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||
</Project>
|
BIN
samples/apachemodule/mod_dmvc.res
Normal file
BIN
samples/apachemodule/mod_dmvc.res
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user