Autor Beitrag
Svenkan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Fr 03.07.09 02:35 
Nachdem ich in meinen Code Exceptions-Messages abgefangen hab, um diese als Textmeldung in einem Statusfeld darzustellen, werden meine TIdSMTP-Ereignisse nicht mehr ausgelöst.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
Try
      Application.ProcessMessages;
      try
        Infos.Lines.Add(TimeToStr(NOW)+': Verbindungsversuch durch '+SMTP.Username+' mit '+SMTP.Host);
        SMTP.Connect;
      except
          on E: Exception do begin
            Infos.Lines.Add('');
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style + [fsBold];
            Infos.Lines.Add('Folgende Fehlermeldung wurde vom Server zurückgeliefert:');
            Infos.Lines.Add(E.Message);
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style - [fsBold];
          end;
      end;

      if SMTP.Authenticate=True then
        Infos.Lines.Add(TimeToStr(NOW)+': Login-Daten akzeptiert')
      else
        Infos.Lines.Add(TimeToStr(NOW)+': Login-Daten abgewiesen!');

      Try
        Infos.Lines.Add(TimeToStr(NOW)+': Versuche Vertretungspläne zu verschicken..');
        SMTP.Send(idMessage);
      Except
          on E: Exception do begin
            Infos.Lines.Add('');
            Infos.Lines.Add('Folgende Fehlermeldung wurde vom Server zurückgeliefert:');
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style + [fsBold];
            Infos.Lines.Add(E.Message);
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style - [fsBold];
          end;
      End;
      SMTP.Disconnect;
    Except
      If SMTP.Connected = True Then
      Begin
        Try
          SMTP.Disconnect;
        Except
            Infos.Lines.Add(TimeToStr(NOW)+': Verbindungsaufbau fehlgeschlagen - Vertretungspläne können nicht verschickt werden!');
        End;
      End;
        Infos.Lines.Add(TimeToStr(NOW)+': Konnte Verbindung zum Host nicht herstellen oder 1. Empfänger ist fehlerhaft');
    End;



Die Ereignisse wurden noch normal ausgelöst, als die on-do-Anweisungen noch nicht mit eingebaut waren.


[Crosspost: www.delphipraxis.net...ht+ausgefuehrt.html]
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 03.07.09 02:51 
Sind denn die Ereignisse auch noch zugewiesen?
(Also entweder per Code oder im Objektinspektor.)

Dann zum restlichen Code:
Der Vergleich mit Booleanwerten (z.B. if SMTP.Authenticate = true then) ist nicht nur unschön und unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier unter Anfängerfehler:
www.delphi-treff.de/...olean-werten/page/4/
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637
Svenkan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Fr 03.07.09 02:55 
Oh, mh..ok, ist mir so gar nicht aufgefallen. Keine Ahnung wann ich dazu gekommen bin, das auf True zu prüfen. :?
Aber danke für den Hinweis!

Im Objektinspektor sind die Ereignisse noch zugewiesen, ja.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 03.07.09 03:01 
Und du hast Haltepunkte in die Ereignisse gesetzt, die nicht aufgerufen werden?

Kann es denn sein, dass Exceptions auftreten, und deshalb die Ereignisse nicht aufgerufen werden? Also bist du einmal schrittweise durch den Code gegangen und hast geschaut was das Programm macht?
Svenkan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Fr 03.07.09 03:07 
Das Programm springt erst gar nicht in diesen Ereignis-Code rein. Habe ich schon ausprobiert.
Also Exceptions treten eigtl keine auf, da sonst direkt auch die IDE wohl direkt das Programm unterbrechen würde. Selbst wenn, würden diese direkt im Info-Feld vermerkt, was auch nicht passiert.
Das komische ist nur, dass dieses Probleme eben erst auftritt, seitdem ich versuche, eben diese Exceptions abzufangen. :?
Allerdings passiert auch so eine nette Sache, dass im Infofeld SelAttributes.Style auf Bold gesetzt wird, was allerdings absolut gar keinen Sinn ergibt, da es keinen Grund dafür gibt. oO

Behelfsmäßig muss ich mir momentan durch dieses "krummen" Code aushelfen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
    Try
      Application.ProcessMessages;
      Infos.Lines.Add(TimeToStr(NOW)+': Verbindungsversuch durch '+SMTP.Username+' mit '+SMTP.Host);
      try
        SMTP.Connect;
      except
          on E: Exception do begin
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
            Infos.Lines.Add('');
            Infos.Lines.Add('Folgende Fehlermeldung wurde vom Server zurückgeliefert:');
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style + [fsBold];
            Infos.Lines.Add(E.Message);
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
          end;
      end;

      Infos.SelAttributes.Style := [];

      if SMTP.Authenticate then
        Infos.Lines.Add(TimeToStr(NOW)+': Login-Daten akzeptiert')
      else begin
        Infos.Lines.Add(TimeToStr(NOW)+': Login-Daten abgewiesen!');
        Exit;
      end;

      Infos.SelAttributes.Style := [];

      Infos.Lines.Add(TimeToStr(NOW)+': Versuche Vertretungspläne zu verschicken..');

      Try
        SMTP.Send(idMessage);
      Except
          on E: Exception do begin
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
            Infos.Lines.Add('');
            Infos.Lines.Add('Folgende Fehlermeldung wurde vom Server zurückgeliefert:');
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style + [fsBold];
            Infos.Lines.Add(E.Message);
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
          end;
      End;
      SMTP.Disconnect;
    Except

          on E: Exception do begin
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
            Infos.Lines.Add('');
            Infos.Lines.Add('Folgende Fehlermeldung wurde vom Server zurückgeliefert:');
            Infos.SelAttributes.Style:=Infos.SelAttributes.Style + [fsBold];
            Infos.Lines.Add(E.Message);
            Infos.SelAttributes.Style := Infos.SelAttributes.Style - [fsBold];
          end;
    End;
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 11.07.09 15:57 
Hallo Svenkan,
ich kann da jetzt leider noch nicht so ganz draus ersehen, weshalb der Fehler auftritt.
(Kann natürlich sein, dass ich da jetzt als einziger nur einfach nicht so schnell durchsteige...)
Aber es wäre vielleicht auch nicht schlecht, wenn Du und mal die ganze procedure/function mitsamt allen Prozedur- und Form-Variablen hier reinstellst...