Moin,
ich arbeite grade an einem Service. 
Ich möchte diesen Service aber wahlweise als normale Anwendung starten (vor alles zur Fehlersuche). Die Logik liegt in einem Datenmodul, das nur erzeugt und initialisiert werden muss. Ob das Datenmodul nun von einem TService oder einem TForm initialisiert wird ist egal.
Nun hab ich mir den Projektquelltext angepasst, dass ich wahlweise ein MainForm erstelle, oder halt den TService:
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 
 | program AAServer;
 uses
 Vcl.SvcMgr,
 Vcl.Forms,
 UsrvMain in 'UsrvMain.pas',
 UServiceTools in 'UServiceTools.pas',
 UdmSrvMain in 'UdmSrvMain.pas',
 UfrmMain in 'UfrmMain.pas' ,
 UParam in 'UParam.pas';
 
 {$R *.RES}
 
 var
 par : TCmdLineParams;
 
 begin
 
 par := TCmdLineParams.Create;
 try
 if par.StartAsApplication then
 begin
 Vcl.Forms.Application.Initialize;
 Vcl.Forms.Application.MainFormOnTaskbar := True;
 Vcl.Forms.Application.CreateForm(TfrmMain, frmMain);
 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(TsrvServer, srvServer);
 Vcl.SvcMgr.Application.Run;
 end;
 
 finally
 par.Free;
 end;
 
 
 end.
 | 
		
	  
TcmdLineParams ist nur meine Kapselung um bequem auf die Kommandozeilenparameter zugreifen zu können. Wenn ich also der Exe ein -StartAsApplication übergebe, wird das Mainform erzeugt und gestartet. Ansonsten halt der TService. Das scheint problemlos zu funktionieren.
Meine Frage ist eigentlich ganz einfach: Kann man das so machen, oder schieß ich mir damit irgendwie ins Knie?
Danke!