AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception bei Programmende

Ein Thema von H.Bothur · begonnen am 10. Aug 2020 · letzter Beitrag vom 12. Aug 2020
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Exception bei Programmende

  Alt 10. Aug 2020, 11:49
Ich habe zwar gerade kein Delphi offen vor mir aber das schaut mir exakt so aus wie das was Application.Run macht.
Recht hast Du, zurück zum Thema, Freimatz schrieb CallStack oder andere wollten "Was macht [Verarbeitung]" wissen oder KodeZwerg gab eine dpr & Formular Anpassung.
Gibt's Fortschritte?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Exception bei Programmende

  Alt 10. Aug 2020, 11:57
Hallo,
1. Liegt das Programm zufällig auf einem Netzlaufwerk?
2. Setze in der DPR auf das end. einen Breakpoint und drücke dann F7.
3. Arbeitest Du mit interfaces?
Heiko
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Exception bei Programmende

  Alt 10. Aug 2020, 12:33
Freimatz schrieb CallStack
Sorry - aber wie gebe ich das aus ??

Zitat:
oder andere wollten "Was macht [Verarbeitung]" wissen
Da wird einfach eine CSV-Datei eigelesen, umformatiert und drei andere CSVs wieder ausgegeben:

Delphi-Quellcode:
procedure TMainForm.Verarbeitung;
var
  timeDate : TDateTime;
  ArbeitsDatei: String;
begin
  GrundeinstellungenLaden;
  AusgabeForm.InitSG;
  AktDatum := DateTimeToStr(Now);
  AktDatum := Copy(AktDatum, 7, 4) +Copy(AktDatum, 4, 2) +Copy(AktDatum, 1, 2);
  Arbeitsdatei := DatenVerzeichnis +EinleseDatei;
  if ParamStr(1) <> 'then Arbeitsdatei := ParamStr(1);
  if FileExist(Arbeitsdatei) then
  begin
    DatenLaden(ArbeitsDatei);
    MainForm.DateiNameLbE.Text := EinleseDatei;
    FileAge(DatenVerzeichnis +EinleseDatei, timeDate);
    MainForm.DateiDatumLbE.Text := DateTimeToStr(timeDate);
    MainForm.ZeilenZahlLbE.Text := FloatToStr(EinleseListe.Count);
    MainForm.Refresh;
    DatenVerarbeiten;
    AusgabeListeSchreiben;
    MailAnhang.Add(Arbeitsdatei);
    if not AllesSchreiben then Mailen.SendeMail(MailEmpfaenger, '', 'AXRO-Preisliste ' +DateToStr(date), MailAnhang);
    if (KopieSenden and not AllesSchreiben) then
    begin
      MailEmpfaenger := KopieEmpfaenger;
      Mailen.SendeMail(MailEmpfaenger, '', 'AXRO-Preisliste ' +DateToStr(date), MailAnhang);
    end;
    DatenSchreiben(Arbeitsdatei);
    AusgabeForm.SchreibePreispflegeDatei;
    AusgabeListeLoeschen;
    AusgabeForm.ShowModal;
    GrundeinstellungenSchreiben;
  end else ShowMessagePos('Preisdatei fehlt - Programm wird beendet !', 200, 200);
  Application.Terminate;
end;
Zitat:
KodeZwerg gab eine dpr & Formular Anpassung. Gibt's Fortschritte?
Noch nicht - da muss ich mehr dran machen weil so die zweite Form noch gar nicht zur Verfügung steht.

Liegt das Programm zufällig auf einem Netzlaufwerk?
Ja - Laufwerk i:\

Zitat:
2. Setze in der DPR auf das end. einen Breakpoint und drücke dann F7.
Die Exception kommt wirklich erst wenn das end. aus der .dpr erreicht wird.

Zitat:
3. Arbeitest Du mit interfaces?
Nein

Ich hoffe das hilft irgendwie weiter

Gruß
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.814 Beiträge
 
Delphi 12 Athens
 
#4

AW: Exception bei Programmende

  Alt 10. Aug 2020, 12:43
Verzichte auf das Application.Terminate

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Exception bei Programmende

  Alt 10. Aug 2020, 12:56
Verzichte auf das Application.Terminate
Ist raus und durch MainForm.Close ersetzt - die Exception kommt trotzdem

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.565 Beiträge
 
Delphi 7 Professional
 
#6

AW: Exception bei Programmende

  Alt 10. Aug 2020, 13:13
Breakpoint auf end. und da dann zeilenweise durchsteppen.
Irgendwann muss da was kommen, was auf die Fehlerstelle hinweist.

Wenn die Exception kommt, musst Du aber unbedingt noch wissen, was in der Zeile davor gemacht wurde, ab da kann man dann (eventuell) etwas genauer in die Richtung "zielführende Fehlersuche" starten.

Und eventuell noch alle offenen Fragen von weiter oben beantworten

Eventuell rufst Du vor dem MainForm.Close auch noch alle Close-Methoden der übrigen Formulare auf, so dass das MainForm garantiert das letzte Formular ist, das beendet wird.

Verarbeitung selbst sieht jetzt nicht zwingend so aus, als könnte der Fehler dort verursacht worden sein. Eventuell liegt das Problem in einer der in Verarbeitung aufgerufenen Methoden.

Womit verschickst Du die Mails? Indy?
Kann mich da schwach an ein Problem erinnern, dass nur im Debugger auftaucht, weil es ansonsten schlicht und einfach ignoriert wird. Sowas in der "sinnvollen" Art wie:
Delphi-Quellcode:
try
  i := 1 / 0; // oder irgendwas Anderes, was 'nen Fehler verursachen kann.
except
  // Hier in der Fehlerbehandlung die pure Ignoranz.
end;
Der Debugger bekommt den Fehler mit und meldet ihn Dir, das Programm geht in seinem Ablauf stillschweigend darüber hinweg.

Es könnte sich daher bei dem von Dir gesuchten Fehler um einen Fehler handeln, der "irgendwo in den Tiefen" der von Dir genutzten Quelltexte bewusst ignoriert wird. Aber: Der Debugger merkt halt alles
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Exception bei Programmende

  Alt 10. Aug 2020, 15:46
Breakpoint auf end. und da dann zeilenweise durchsteppen. [...]

Womit verschickst Du die Mails? Indy? [...]
Und genau das war es ... Es knallt in der Initialisation der IDWinSock2

Wieder was dazugelernt !

Gruß
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Exception bei Programmende

  Alt 11. Aug 2020, 07:14
Ihr ratet doch aktuell nur.

FastMM rein und paar Schutzblöcke einbauen. Damit kann das Problem eingegrenzt werden.
Im "DEBUG" Modus bauen und schauen, dass die MAPS an sind, damit paar Zeilennummern ausgeworfen werden.

Glaskugel: Ich denke bei dem Beenden der Anwendung, wird noch ein Ereignis ausgelöst, so etwas doppelt freigegeben wird und/oder etwas aktualisiert werden soll, was schon freigegeben ist.


Werbung für mein YT Kanal:
FastMM https://www.youtube.com/watch?v=o0yZgQoV8MA
Schutzblöcke: https://www.youtube.com/watch?v=mag5Qp17NM4
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.565 Beiträge
 
Delphi 7 Professional
 
#9

AW: Exception bei Programmende

  Alt 10. Aug 2020, 12:49
Ohne Run muss dashier nicht sein: Application.Terminate; Mach das bitte mal weg. (Sherlock war schneller )

Da Verarbeitung eine Routine von TMainForm ist, könnte statt des Application.Terminate auch ein Close reichen, zumindest mach ich das immer so, wenn ich ein Programm beenden will. Methode Close des Hauptformulars aufrufen. (Ist nämlich extra dazu da.)

Mir widerstrebt es immer wieder, wenn an einer Stelle, an der sich ein Programm, aufgrund des programmierten Ablaufes, sowieso beendet nochmal zu schreiben: "Beende Dich".

Ohne Run endet das Programm nach dem Aufruf von MainForm.Verarbeitung in der DPR. Warum muss dann in MainForm.Verarbeitung nochmal stehen: "Beende Dich"?

Keine Ahnung, ob das jetzt irgendwelche Auswirkungen "im realen Leben" hat. Aber es ist mindestens moppeltgedoppelt (oder so )
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 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