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:
[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
Jedoch klappt dies nicht immer, und manchmal ist der letzte Logbucheintrag
Code:
0721159 wird versendet an ***@bla.de
Dieser Eintrag wird geschrieben vor dem eigentlich Mailversand über die
Indy Komponenten.
Im Erfolgsfalls soll anschliessend ein
kommen, ansonsten ein
Jedoch es kommt gar kein Eintrag, und die Serviceanwendung scheint zu hängen. Das Ulkige ist jedoch, DASS DIE MAIL ANKOMMT!!
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:
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 ;
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.