![]() |
Serviceanwendung treibt mich in den Wahnsinn
Ich habe eine Serviceanwendung, die im Grunde nichts anderes machen soll, als im stündlichen Rythmus in einer SQL Tabelle nachzuschlagen, ob irgendwelche Mails (automatisch vom Programm erzeugt) verschickt werden müssen. Sinn des Ganzen soll sein, dass Benutzer heute schon Mails versenden, und nicht mehr daran denken müssen. Reell soll die Mail aber an einem vordefiniertem Datum rausgehen.
Im Grund klappt das auch. Weil ich die Serviceanwendung jedoch unter Delphi4 nicht debuggt bekomme, weiss ich nicht so recht wie ich rangehen soll, um Programmierfehler zu finden. Ich erzeuge zur Zeit einfach ein Logbuch, in dem dann alle relevanten Schritte oder Fehler eingetragen werden... Sieht im Erfolgsfall etwa so aus:
Code:
Jedoch klappt dies nicht immer, und manchmal ist der letzte Logbucheintrag
[05.12.05 15:09:45] - Temporäres Verzeichnis gesetzt auf "C:\WINDOWS\TEMP\Brunata\"
[05.12.05 15:09:45] - Service gestartet [05.12.05 15:09:45] - Mit SQL Server verbunden [05.12.05 15:09:45] - Erster Durchlauf in 2 Sekunden [05.12.05 15:09:47] - Starte periodischer Vorgang [05.12.05 15:09:47] - [05.12.05 15:09:47] - Mailmodul = dmDelProp [05.12.05 15:09:47] - 1 Liegenschaften sind betroffen [05.12.05 15:09:47] - 0721159 wird versendet an ***@bla.de [05.12.05 15:09:48] - Senden OK [05.12.05 15:09:48] - Sendedatum setzen OK [05.12.05 15:09:48] - Alle Liegenschaften wurden behandelt [05.12.05 15:09:48] - [05.12.05 15:09:48] - Periodischer Vorgang beendet. Nächster Vorgang um 05.12.2005 15:10:17 [05.12.05 15:09:59] - Service gestoppt
Code:
Dieser Eintrag wird geschrieben vor dem eigentlich Mailversand über die Indy Komponenten.
0721159 wird versendet an ***@bla.de
Im Erfolgsfalls soll anschliessend ein
Code:
kommen, ansonsten ein
Senden OK
Code:
Jedoch es kommt gar kein Eintrag, und die Serviceanwendung scheint zu hängen. Das Ulkige ist jedoch, DASS DIE MAIL ANKOMMT!!
Senden ERROR
Noch skuriler... In einigen Fällen wird das Logbuch korrekt erstellt. Ich seh keinen Zusammenhang. Leider ist es jetzt schwer hier Code zu posten, und den genau zu erklären, da relativ viel dahinter steckt. Aber vielleicht sind ja solche Probleme allgemein bekannt bei Serviceanwendungen. Am eigentlichen Mailmodul kanns eigentlich nicht hängen da dasselbe in normalen Applikationen bislang tadellos funktionniert. Naja, hier mal trotzdem der Code
Delphi-Quellcode:
Also meine eigentliche Frage wäre wohl, wie ich eine Serviceanwendung debuggen kann unter Delphi 4. Oder genauso helfen würde mir, wenn mir einer diese abstruse Verhalten erklären könnte.
with qryBetroffeneLiegenschaften do begin
try open ; except Log.Add (1,'*** E R R O R *** View vwInformHurthOnDeletedProperties konnte nicht geöffnet werden') ; exit ; end ; if Active then begin // Active prüft lediglich, ob die Datenbankverbindung noch steht Log.Add (1,Format ('%d Liegenschaften sind betroffen',[AnzahlLiegenschaften])) ; while not EOF do begin LiegenschaftAusserBetrieb.Prepare (FieldByName('ID').AsInteger) ; LiegenschaftAusserBetrieb.RelatedFields.Prop := FieldByName('ID').AsInteger ; ToAddress := LiegenschaftAusserBetrieb.CommonValue('SB_Hurth_EMail') ; Log.Add (1,format( '%s wird versendet an %s', [FieldByName('Nr').AsString, ToAddress] )) ; if LiegenschaftAusserBetrieb.Execute (ToAddress,-1) then begin // Die eigentliche Senderoutine Log.Add (2,'Senden OK') ; qrySetSentDatum.ParamByName('ID').AsInteger := FieldByName('ID').AsInteger ; qrySetSentDatum.ParamByName('Datum').AsDatetime := now ; try qrySetSentDatum.ExecSQL ; Log.Add (2,'Sendedatum setzen OK') ; except Log.Add (2,'Sendedatum setzen *** E R R O R ***') ; end ; end else begin Log.Add (2,'Senden *** E R R O R ***') ; end ; next ; end ; Log.Add (1,'Alle Liegenschaften wurden behandelt') ; end ; close ; end ; |
Re: Serviceanwendung treibt mich in den Wahnsinn
Moin Jelly,
...in der Delphi IDE im Menü...Run -> Parameters ...unter Host-Application den Pfad zur Service-EXE ...und unter Parameters /Debug eingeben ..sollte so gehen Gruß Tyrael |
Re: Serviceanwendung treibt mich in den Wahnsinn
Vielleicht den Service mal in eine normale Anwendung umschreiben, dann debuggen und wieder als Service definieren.
Florian |
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
einfach unter Parameters /Debug eingeben, dann kann man auch einen Service debuggen ;) |
Re: Serviceanwendung treibt mich in den Wahnsinn
Moyen,
Zitat:
|
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
Zitat:
Ich habe mittlerweilen den Verdacht, dass es an der BDE liegt. Ich muss da mal noch bischen testen, dann kann ich hoffentlich mehr dazu sagen. Wie es scheint, taucht der Fehler nur dann auf, wenn ich während der Service läuft, ich in einer anderen Anwendung eine bestimmte DB Tabelle geöffnet habe. Wenn dem so sei, wär es für mich nicht allzu tragisch, weil der Service nachher eh auf dem Firmenserver laufen wird. Deshalb mal noch ne Frage hier: Kann es sein dass die BDE Probleme macht, wenn 2 User (also der angemeldete und das Systemkonto) auf eine Datenbank zugreifen? |
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
gibt es den Punkt in D4 nicht oder was läuft dann nicht? |
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
Ich muss diesen Service irgendwie debuggen können. Gibts denn da noch Möglichkeiten. |
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
|
Re: Serviceanwendung treibt mich in den Wahnsinn
Zitat:
Was es in Delphi 4 nicht gibt, ist Start->Mit Prozess verbinden... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr. |
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