AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi [Behoben, siehe Beitrag #13] Close; im TTimer lässt Programm manchmal abschmieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Behoben, siehe Beitrag #13] Close; im TTimer lässt Programm manchmal abschmieren

Ein Thema von a.def · begonnen am 24. Nov 2016 · letzter Beitrag vom 24. Nov 2016
Antwort Antwort
Seite 2 von 2     12   
a.def
(Gast)

n/a Beiträge
 
#11

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 16:15
Der Fehler kommt jetzt wieder seltener

Aber er kommt soweit ich das jetzt erst einmal erkennen konnte nur wenn ich Timer1 aktiviere, welche das Programm schließt.

Vom Close kommt der Fehler wohl auch nicht sondern es passiert genau zwischen Ende Timer_Arbeit und If-Eintrittspunkt Timer1
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 16:20
Du hast mit dem Debugger ein mächtiges Werkzeug. Nutze es.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#13

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 16:21
-Warum ist der Post nach dem Bearbeiten hier plötzlich doppelt?-


Zitat:
* siehe Cursorposition/Markierung im Quellcode
* siehe Stacktrace
Die Cursorposition im Code wird beim Werfen einer Exception nicht verändert.

Der Fehler tritt wohl hier auf. Er tritt manchmal auf aber nicht immer:
- Classes.pas
Delphi-Quellcode:
procedure TList.Delete(Index: Integer);
var
  Temp: Pointer;
begin
  if (Index < 0) or (Index >= FCount) then // <==
// ...
Ich werde mal meine Listen überprüfen.

Beim Beenden der Anwendung gibt es aber keine Speicherlecks.


-------------


Ich glaube den Fehler jetzt mit dem Debugger gefunden zu haben.
Ich werde jetzt für etwa eine Stunde Tests durchführen und dann Feierabend machen.
Ich melde mich dann hier im selben Beitrag zurück.


-------------


112 automatisierte Tests am Stück später. Ich denke ich kann sagen, dass der Fehler behoben ist.
Es war nicht das Close-Event und auch kein Timer. Hier wurde ich vom System auf die falsche Spur geschickt.

Es war einfach nur eine TList, aus welcher doppelt Items gelöscht wurden.
Dass das aber in einem APPCRASH resultiert und nicht in einer normalen Exception, war ein bisschen seltsam.

Geändert von a.def (24. Nov 2016 um 18:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 19:08
Es war einfach nur eine TList, aus welcher doppelt Items gelöscht wurden.
Dass das aber in einem APPCRASH resultiert und nicht in einer normalen Exception, war ein bisschen seltsam.
Wie sieht denn deine Fehlerbehandlung an dieser Stelle aus? Wenndu da keine Fehlerbehandlung hast, dann wir die Exception bis ans Betriebssystem hoch gereicht, was letztendlich den Absturz der Anwendung bedeutet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#15

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 19:38
Es war einfach nur eine TList, aus welcher doppelt Items gelöscht wurden.
Dass das aber in einem APPCRASH resultiert und nicht in einer normalen Exception, war ein bisschen seltsam.
Wie sieht denn deine Fehlerbehandlung an dieser Stelle aus? Wenndu da keine Fehlerbehandlung hast, dann wir die Exception bis ans Betriebssystem hoch gereicht, was letztendlich den Absturz der Anwendung bedeutet.
Fehlerbehandlung habe ich da gerade keine, wird aber selbstverständlich nachgebessert!

Aktuell frage ich nur ab, ob die Liste ungleich nil ist und dann werden alle Einträge von Count-1 bis 0 gelöscht.

Ich denke ein Assigned() sollte hier reichen. Oder ich überdenke mal diese Prozedur und baue sie so, dass sie nur einmalig aufgerufen wird. Ist ja auch Blödsinn zwei Aufrufe.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

AW: Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 23:28
Es war einfach nur eine TList, aus welcher doppelt Items gelöscht wurden.
Dass das aber in einem APPCRASH resultiert und nicht in einer normalen Exception, war ein bisschen seltsam.
Wie sieht denn deine Fehlerbehandlung an dieser Stelle aus? Wenndu da keine Fehlerbehandlung hast, dann wir die Exception bis ans Betriebssystem hoch gereicht, was letztendlich den Absturz der Anwendung bedeutet.
Fehlerbehandlung habe ich da gerade keine, wird aber selbstverständlich nachgebessert!
Dann ist es ja klar, dass bei einer Exception die Anwendung abstürzt.

Und warum "mache ich dann mal später"? Hättest du s gleich richtig gemacht hättest du dir zwei Tage Fehlersuche erspart.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#17

AW: [Behoben, siehe Beitrag #13] Close; im TTimer lässt Programm manchmal abschmieren

  Alt 24. Nov 2016, 23:40
Zitat:
Und warum "mache ich dann mal später"? Hättest du s gleich richtig gemacht hättest du dir zwei Tage Fehlersuche erspart.
Aus Fehlern lernt man für später
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz