Kod: Tümünü seç
program BenimServis;
uses
Vcl.Forms,
Vcl.SvcMgr,
untServis in 'untServis.pas' {Servis: TService};
{$R *.RES}
begin
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TServis, Servis);
Application.Run;
end.
Kod: Tümünü seç
program BenimServis;
uses
System.SysUtils,
Vcl.Forms,
Vcl.SvcMgr,
untServis in 'untServis.pas' {Servis: TService},
untAnaForm in 'untAnaForm.pas' {FormAna: TForm};
{$R *.RES}
var Delphiden, isDesktop:Boolean;
begin
isDesktop:=SameText(ParamStr(1),'/win'); //masaüstü gibi çalışsın isteniyorsa ilk önce /win parametresi verilir
{$WARNINGS OFF}
Delphiden:=DebugHook<>0; //delphiden f9 la mı çalışıyor
{$WARNINGS ON}
if Delphiden or isDesktop then begin //masaüstü uygulaması gibi çalışması için FormAna'da timer olmalı ve buradan servis metodu çalışacak
Vcl.Forms.Application.Initialize;
Vcl.Forms.Application.MainFormOnTaskbar := True;
Vcl.Forms.Application.CreateForm(TServis, Servis);
Vcl.Forms.Application.CreateForm(TFormAna, FormAna);
Vcl.Forms.Application.Run;
end else begin //uygulama normal servis olarak çalışır
if not Vcl.SvcMgr.Application.DelayInitialize or Vcl.SvcMgr.Application.Installing then
Vcl.SvcMgr.Application.Initialize;
Vcl.SvcMgr.Application.CreateForm(TServis, Servis);
Vcl.SvcMgr.Application.Run;
end;
end.
Yine benzeri bir mantıkla DataSnap servis uygulamasında da aynı durum geçerli olacaktır. Mesela aşağıdaki gibi bir DataSnap Server Servis uygulamamız olsun.
Kod: Tümünü seç
program VeriSaglayici;
uses
Vcl.SvcMgr,
dmServerDataModule in 'dmServerDataModule.pas' {Dmod: TDataModule},
ServerMethodsUnitVeriSaglayici in 'ServerMethodsUnitVeriSaglayici.pas' {ServerMethodsVeriVer: TDSServerModule},
ServerContainerUnitVeriSaglayici in 'ServerContainerUnitVeriSaglayici.pas' {VeriVerContainer: TService};
{$R *.RES}
begin
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TDmod, Dmod);
Application.CreateForm(TVeriVerContainer, VeriVerContainer);
Application.Run;
end.
Kod: Tümünü seç
program VeriSaglayici;
uses
System.SysUtils,
Vcl.Forms,
Vcl.SvcMgr,
dmServerDataModule in 'dmServerDataModule.pas' {Dmod: TDataModule},
ServerMethodsUnitVeriSaglayici in 'ServerMethodsUnitVeriSaglayici.pas' {ServerMethodsVeriVer: TDSServerModule},
ServerContainerUnitVeriSaglayici in 'ServerContainerUnitVeriSaglayici.pas' {VeriVerContainer: TService},
untAnaForm in 'untAnaForm.pas' {frmAna: TForm};
{$R *.RES}
var Delphiden, isDesktop:Boolean;
begin
isDesktop:=SameText(ParamStr(1),'/win'); //masaüstü gibi çalışsın isteniyorsa ilk önce /win parametresi verilir
{$WARNINGS OFF}
Delphiden:=DebugHook<>0; //delphiden f9 la mı çalışıyor
{$WARNINGS ON}
if Delphiden or isDesktop then begin //masaüstü uygulaması gibi çalışması için FormAna'da timer olmalı ve buradan servis metodu çalışacak
Vcl.Forms.Application.Initialize;
Vcl.Forms.Application.MainFormOnTaskbar := True;
Vcl.Forms.Application.CreateForm(TDmod, Dmod);
Vcl.Forms.Application.CreateForm(TVeriVerContainer, VeriVerContainer);
Vcl.Forms.Application.CreateForm(TfrmAna, frmAna);
Vcl.Forms.Application.Run;
end else begin
if not Vcl.SvcMgr.Application.DelayInitialize or Vcl.SvcMgr.Application.Installing then
Vcl.SvcMgr.Application.Initialize;
Vcl.SvcMgr.Application.CreateForm(TDmod, Dmod);
Vcl.SvcMgr.Application.CreateForm(TVeriVerContainer, VeriVerContainer);
Vcl.SvcMgr.Application.Run;
end;
end.