Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Console oder Dienst (https://www.delphipraxis.net/152169-console-oder-dienst.html)

franktron 14. Jun 2010 09:40

Console oder Dienst
 
Wie kann ich unter D2010 das so hinkriegen das ich entweder eine Konsolen Programm oder eine Dienst Kompilieren kann (selber Code)

Luckie 14. Jun 2010 09:52

AW: Console oder Dienst
 
Gar nicht. Und das wird auch mit anderen Compiler nicht funktionieren. Hast du dir mal den Aufbau eines Dienstes angeguckt und den Aufbau eine Konsolenprogrammes?

franktron 14. Jun 2010 09:54

AW: Console oder Dienst
 
Natürlich ich meine ja auch mit Compilerdirektiven

Luckie 14. Jun 2010 11:41

AW: Console oder Dienst
 
dann wirst du ganze Codeblöcke per Compilerschalter aus- bzw- einkommentieren müssen. Und ob dass dann übersichtlicher ist als zwei getrennte Anwendungen? Die Funktionalität kann man bzw. sollte man auch in eine extra Unit/Klasse auslagern, welche man dann von beiden Anwendungen aus einbinden kann. So muss nur ein Code gepflegt werden und nur jeweils die zugehörigen Anwendungen neu kompiliert werden.

Dezipaitor 15. Jun 2010 22:27

AW: Console oder Dienst
 
Du kannst den Dienstcode in einer Konsole ausführen lassen. Dazu einfach direkt den Code im Hauptprogramm aufrufen. Du willst ja Compilerdirektiven verwenden, dann kannst du mit IFDEF usw das machen.
Zudem kannst du in Delphi 200x Kopien der Einstellungen im Projektmanager anfertigen und dort dann die Compilerdirektive verwenden.
Da gibt es z.B. Debug und Release und du könntest noch Debug Console und Release Console hinzufügen und dort die notwendige Compilerdirektive in den Einstellungen setzen.

Natürlich kannst du keine Dienstspezifischenaufrufe machen, z.b. den Servicemanager (Stop, Start, Pause, Parameter).

Delphi-Quellcode:
{$IFNDEF CMD} 
      SvcMgr.Application.Initialize;
      SvcMgr.Application.CreateForm(...);
      SvcMgr.Application.Run;    
  {$ELSE}
      SV := TServiceThread.Create;
      Sv.DoExecute(); //ruft intern Execute auf, da es nicht sichtbar ist
  {$ENDIF}


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz