Erstmal ist es sowieso möglich FMX und
VCL zu mischen
und dann läuft in deinem Fall doch eh nicht Beides gleichzeitig, also egal.
Sehr gut. Das wusste ich nicht das man das problemlos mischen kann.
TService baut ja auf der
VCL auf, aber normal bekommst du davon nix mit.
Ja ich weiß.
Der Code ist alt.. wollte damals bestimmt doppelt und dreifach sicher gehen das es nicht mehr weitergeht. Habe aber keine Erklärung warum.
Wieso den Code nicht direkt im
DPR-Maincode, bzw. warum nicht einen Boolean-Result und bei False den nachfolgenden Code überspringen?
Ich verwende das recht häufig. Und so wiederhole ich mich nicht so oft...
PS: ServiceApplication.Run beendet sich ja sofort wieder, wenn die Service-Anwendung nicht als Service gestartet wurde.
Drum hab ich mir den Code vom Run nachgebaut und wenn Parameter -DEBUG, erstelle ich ein DummyFenster mit einem Beendenknopf
und führe dann den Code meines TService-Klasse aus, um so sen Service einfach debuggen zu können (-DEBUG in den Startparametern des Projekts)
Man könnte aber auch zusätzlich/stattdessen auf
IsDebuggerPresent prüfen.
Interessant. Ich benutzte die "Fenster" Anwendung um den Dienst (selbe exe) zu starten/stoppen/Installieren/Deinstallieren/Settings zu ändern...Oder um die Geschäftslogik unabhängig vom Servicemanager auszuführen.
Das hilft auch beim debuggen.
Und ich erspare mir Setups und der Support muss dann nicht erst in den ServiceManager um nachzusehen ob der Dienst da ist und dann in die Konsole um den Dienst zu installieren,...
Muss ich Einen Windows Dienst erstellen und dann ein FMX Fenster hinzufügen ?
Muss ich evtl die "Projektoptionen->Delphi-Compiler->
Unit-Gültigkeitsbereichsnamen" aus einem FMX projekt kopieren? Oder immer alles voll qualifiziert nutzen?
Ich benutze diese "UserTools.proj"
Code:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_Define>FrameWork_$(FrameworkType);$(DCC_Define)</DCC_Define>
</PropertyGroup>
</Project>
Damit ich mit {$IFDEF Framework_FMX} oder {$IFDEF Framework_VCL} arbeiten kann.
Damit das korrekt gesetzt wird muss ich
Muss ich vermutlich erst das FMX Projekt starten und dann den Dienst Code im Projekt nachtragen oder?
Oder kann ich "FrameworkType" irgendwo in der
IDE in den Projektoptionen ändern?