Files
HDCApi/hdcDZApi.dpr
2026-03-03 16:18:27 +01:00

259 lines
7.0 KiB
ObjectPascal

program hdcDZApi;
{$IFDEF DEBUG}
{$APPTYPE CONSOLE}
{$ENDIF}
{$I GlobalDefs.inc}
uses
MSHeap,
Vcl.SvcMgr,
System.SysUtils,
Winapi.Windows,
System.Classes,
{$IFDEF DEBUG}
Web.WebReq,
{$ENDIF}
MVCFramework.Middleware.Swagger,
MVCFramework.Swagger.Commons,
uWinService in 'uWinService.pas' {HDCApiService: TService},
uWebMod in 'uWebMod.pas' {WebModule1: TWebModule},
uDataMod in 'uDataMod.pas' {datMod: TDataModule},
helTabsBIDs,
uCommons in 'uCommons.pas',
uCtrlBase in 'uCtrlBase.pas',
uCtrlZamestnanci in 'uCtrlZamestnanci.pas',
uCtrlKmenZbozi in 'uCtrlKmenZbozi.pas',
uCtrlObehZbozi in 'uCtrlObehZbozi.pas',
uCtrlVyroba in 'uCtrlVyroba.pas',
uCtrlQMS in 'uCtrlQMS.pas',
uCtrlOrganizace in 'uCtrlOrganizace.pas',
uCtrlObecne in 'uCtrlObecne.pas',
uHeOObj_Base in 'uHeOObj_Base.pas',
uHeoObj_Vyroba in 'uHeoObj_Vyroba.pas',
uHeoObj_QMS in 'uHeoObj_QMS.pas',
uSvc_Base in 'uSvc_Base.pas',
uSvc_ObehZbozi in 'uSvc_ObehZbozi.pas',
uSvc_KmenZbozi in 'uSvc_KmenZbozi.pas',
uSvc_Vyroba in 'uSvc_Vyroba.pas',
uSvc_Organizace in 'uSvc_Organizace.pas',
uSvc_Zamestnanci in 'uSvc_Zamestnanci.pas',
uSvc_Obecne in 'uSvc_Obecne.pas',
uSvc_QMS in 'uSvc_QMS.pas'
{$IFDEF CUSTOM_CTRL}
,uHeOObj_Custom in 'uHeOObj_Custom.pas'
,uCtrlCustom in 'uCtrlCustom.pas'
,uSvcCustom in 'uSvcCustom.pas'
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Kdynium}
,uHeOObj_Custom in '_custom\Kdynium\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Kdynium\uCtrlCustom.pas'
,uSvcCustom in '_custom\Kdynium\uSvcCustom.pas'
{$ENDIF}
{$IFDEF CUSTOM_CTRL_GatemaSD}
,uHeOObj_CustomSDG in '_custom\GatemaSD\uHeOObj_CustomSDG.pas'
,uCtrlCustomSDG in '_custom\GatemaSD\uCtrlCustomSDG.pas'
,uSvcCustomSDG in '_custom\GatemaSD\uSvcCustomSDG.pas'
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Rootvin}
,uHeOObj_Custom in '_custom\Rootvin\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Rootvin\uCtrlCustom.pas' {TRTNController: TBaseController},
uSvcCustom in '_custom\Rootvin\uSvcCustom.pas'
{$R '_custom\Rootvin\zdroje.RES'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Koramex}
,uHeOObj_Custom in '_custom\Koramex\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Koramex\uCtrlCustom.pas'
,uSvcCustom in '_custom\Koramex\uSvcCustom.pas'
{$ENDIF}
{$IFDEF CUSTOM_CTRL_INCOSystems}
,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas'
,uSvcCustom in '_custom\INCOSystems\uSvcCustom.pas'
{$R .\_custom\INCOSystems\zdroje.RES}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky}
,uHeOObj_Custom in '_custom\Gornicky\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Gornicky\uCtrlCustom.pas'
,uSvcCustom in '_custom\Gornicky\uSvcCustom.pas'
{$R '_custom\Gornicky\zdroje.RES'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_EMPolar}
,uHeOObj_Custom in '_custom\EMPolar\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\EMPolar\uCtrlCustom.pas'
,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas'
{$R '_custom\EMPolar\zdroje.RES'}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Westra}
,uHeOObj_Custom in '_custom\Westra\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\Westra\uCtrlCustom.pas'
,uSvcCustom in '_custom\Westra\uSvcCustom.pas'
{$R '_custom\Westra\zdroje.RES'}
{$ENDIF}
;
{$R *.RES}
{$R sqlZdroje.RES}
{$IFDEF CUSTOM_CTRL_Rootvin}
{$R .\_custom\Rootvin\zdroje.RES}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_INCOSystems}
{$R .\_custom\INCOSystems\zdroje.RES}
{$ENDIF}
{$IFDEF CUSTOM_CTRL_Gornicky}
{$R .\_custom\Gornicky\zdroje.RES}
{$ENDIF}
procedure SpustitJakoPrg;
var Event : TInputrecord;
EventsRead : DWORD;
Done : Boolean;
begin
try
var HDCDZApiService: THDCDZApiService;
var started: boolean;
var stopped: boolean;
Application.Initialize;
Application.CreateForm (TdatMod, datMod);
// Application.CreateForm(TWebModule1, WebModule1);
// In debug mode the server acts as a console application.
// Create the TService descendant manually.
// uWinService.UninstallMode:= true;
HDCDZApiService:= THDCDZApiService.Create (nil);
WriteLn (HDCDZApiService.Name + ' DEBUG mode');
HDCDZApiService.ServiceAfterInstall (HDCDZApiService);
if (WebRequestHandler<>nil) then
WebRequestHandler.WebModuleClass := WebModuleClass;
// Simulate service start.
HDCDZApiService.ServiceStart (HDCDZApiService, started);
// Keep the console box running (ServerContainer1 code runs in the background)
WriteLn('Press ENTER to exit.');
ReadLn;
WriteLn('Ukoncuji thready...');
HDCDZApiService.ServiceStop (HDCDZApiService, stopped);
HDCDZApiService.ServiceBeforeUninstall (HDCDZApiService);
HDCDZApiService.ServiceAfterUnInstall (HDCDZApiService);
// On exit, destroy the service object.
if (stopped) then
FreeAndNil (HDCDZApiService);
except
on E: Exception do
begin
Writeln(E.ClassName, ': ', E.Message);
{$IFDEF DEBUG}
Done:= False;
repeat
ReadConsoleInput(GetStdhandle(STD_INPUT_HANDLE), Event, 1, EventsRead);
if Event.Eventtype = key_Event then
begin
if Event.Event.KeyEvent.bKeyDown then
begin
Done:= (Event.Event.KeyEvent.wVirtualKeyCode = VK_ESCAPE);
{
if (not Done) and (Event.Event.KeyEvent.AsciiChar <> #0) then
WriteLn('You typed: ', Event.Event.KeyEvent.AsciiChar);
}
end;
end;
until Done;
{$ENDIF}
// WriteLn('Press ENTER to exit.');
// ReadLn;
end;
end;
end;
begin
ReportMemoryLeaksOnShutdown:= true;
{$IFDEF DEBUG}
{
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(THDCDZApiService, HDCDZApiService);
Application.CreateForm(TdatMod, datMod);
// thread čekající na ENTER
TThread.CreateAnonymousThread(
procedure
var Stopped: Boolean;
begin
Writeln('Stiskem ENTER ukončete...');
Readln;
TThread.Queue(nil,
procedure
begin
HDCDZApiService.ServiceStop(HDCDZApiService, Stopped);
end);
end
).Start;
Application.Run;
}
SpustitJakoPrg;
{$ELSE}
if (FindCmdLineSwitch('dbg', true)) then
SpustitJakoPrg
else
begin
// Windows 2003 Server requires StartServiceCtrlDispatcher to be
// called before CoRegisterClassObject, which can be called indirectly
// by Application.Initialize. TServiceApplication.DelayInitialize allows
// Application.Initialize to be called from TService.Main (after
// StartServiceCtrlDispatcher has been called).
//
// Delayed initialization of the Application object may affect
// events which then occur prior to initialization, such as
// TService.OnCreate. It is only recommended if the ServiceApplication
// registers a class object with OLE and is intended for use with
// Windows 2003 Server.
//
// Application.DelayInitialize := True;
//
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(THDCDZApiService, HDCDZApiService);
Application.CreateForm(TdatMod, datMod);
Application.Run;
end;
{$ENDIF}
end.