Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TService debuggen (https://www.delphipraxis.net/103224-tservice-debuggen.html)

Phoenix 13. Nov 2007 12:06

Re: TService debuggen
 
Es macht ggf. Sinn, die TService-Klasse etwas aufzubohren.
Ich arbeite schon länger mit Diensten, die sich nicht nur als Service, sondern zusätzlich auch als Kommandozeilen-Programm starten lassen. Damit lässt sich sowas einwandfrei aus der IDE heraus debuggen, ohne den Dienst zu installieren und als Dienst zu starten.

ralfiii 13. Nov 2007 12:31

Re: TService debuggen
 
Zitat:

Zitat von Phoenix
Es macht ggf. Sinn, die TService-Klasse etwas aufzubohren.
Ich arbeite schon länger mit Diensten, die sich nicht nur als Service, sondern zusätzlich auch als Kommandozeilen-Programm starten lassen. Damit lässt sich sowas einwandfrei aus der IDE heraus debuggen, ohne den Dienst zu installieren und als Dienst zu starten.

Klingt interessant.
Magst ein bisserl mehr darüber erzählen?

Phoenix 13. Nov 2007 12:51

Re: TService debuggen
 
Ich befürchte, da das (leider) nicht auf meinem Mist gewachsen ist, dass ich da nicht viel drüber sagen darf.

Bernhard Geyer 13. Nov 2007 13:03

Re: TService debuggen
 
ich würde es so machen:

Alle Programmlogik in eigene Klasse zusammenfassen und einmal in ein Service-Anwendung integrieren und einmal in eine normale Anwendung.

ralfiii 13. Nov 2007 13:11

Re: TService debuggen
 
Zitat:

Zitat von Bernhard Geyer
Alle Programmlogik in eigene Klasse zusammenfassen und einmal in ein Service-Anwendung integrieren und einmal in eine normale Anwendung.

So mach ich das auch gegenwärtig, aber wenn man TService aufbohren könnte (oder so) dass man noch leichter ein .Exe und/oder ein Service hat - das wär schon was.

Bernhard Geyer 13. Nov 2007 13:15

Re: TService debuggen
 
Zitat:

Zitat von ralfiii
Zitat:

Zitat von Bernhard Geyer
Alle Programmlogik in eigene Klasse zusammenfassen und einmal in ein Service-Anwendung integrieren und einmal in eine normale Anwendung.

So mach ich das auch gegenwärtig, aber wenn man TService aufbohren könnte (oder so) dass man noch leichter ein .Exe und/oder ein Service hat - das wär schon was.

Haben sowas ähnliches, jedoch aufgrund der Nachteile (NT-Dienst und interaktion mit Desktop, Erhöhte Probleme mit Vista) werden wir das in der nächsten Version der Applikation wieder zurücknehmen und schön ein App als Dienst haben und eine App als GUI-Oberfläche die mit dem Dienst per TCP/Name Pipes oder was auch sonst kommuniziert.

Codewalker 23. Nov 2009 11:51

Re: TService debuggen
 
Zitat:

Zitat von Phoenix
Es macht ggf. Sinn, die TService-Klasse etwas aufzubohren.
Ich arbeite schon länger mit Diensten, die sich nicht nur als Service, sondern zusätzlich auch als Kommandozeilen-Programm starten lassen. Damit lässt sich sowas einwandfrei aus der IDE heraus debuggen, ohne den Dienst zu installieren und als Dienst zu starten.

Zitat:

Zitat von Phoenix
Ich befürchte, da das (leider) nicht auf meinem Mist gewachsen ist, dass ich da nicht viel drüber sagen darf.

Eigentlich schade. Aber ich habe eine augenscheinlich funktionierende Variante per Zufall entdeckt. Dazu muss man nichtmal TService aufbohren, sondern einfach in die Projektdatei
Delphi-Quellcode:
  {$APPTYPE CONSOLE}
hinzufügen. Schon bekommt man automatisch eine Konsole und damit einen Prozess geliefert. Man kann mit Writeln('TEXT'); sehr einfach Meldungen ausgeben und auch das Debuggen klappt super. Man muss nur das ganze wieder auskommentieren, wenn man den Service irgendwann als Dienst nutzen will ohne das ganze Debugging drum herum. Es wäre daher sehr hilfreich, die Debug-Ausgaben über eine Hilfsfunktion zu kapseln. Dabei kann man sich selber noch ein DEFINE bauen oder einfach auf einen Debugger prüfen:

Delphi-Quellcode:
procedure WriteConsole(Text: String);
begin
 If DebugHook <> 0
  then Writeln(Text);
end;
oder wenn man sich neben {$APPTYPE CONSOLE} noch ein eigenes DEFINE baut:
Delphi-Quellcode:
{...}
{$DEFINE DEBUGSERVICE}
{...}
procedure WriteConsole(Text: String);
begin
 {$IFDEF DEBUGSERVICE}
 Writeln(Text);
 {$ENDIF}
end;
Wichtig: Dieses Define gilt nur für diese Unit!

Klappt bisher sehr gut - Feedback erwünscht :wink:

Dezipaitor 23. Nov 2009 15:07

Re: TService debuggen
 
Ganz einfach:
http://blog.delphi-jedi.net/2008/05/...s-an-easy-way/


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.
Seite 2 von 2     12   

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