AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Ereignis wird nicht zu Ende geführt (früher "... ausgelöst")
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignis wird nicht zu Ende geführt (früher "... ausgelöst")

Ein Thema von Schwedenbitter · begonnen am 13. Nov 2014 · letzter Beitrag vom 14. Nov 2014
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.558 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ereignis wird nicht ausgelöst

  Alt 13. Nov 2014, 23:17
Warum wurde der Debugger nicht benutzt, oder hat der dir wirklich nicht den Grund genannt?
Zitat:
Erste Gelegenheit für Exception bei $7534C42D. Exception-Klasse EListError mit Meldung 'Listenindex überschreitet das Maximum (3)'. Prozess ObjectInThread.exe (162412)
In Zeile Synchronize(FireOnEnde); . (Fehlerzeile im Debugger durch Synchronize verfälscht, aber mit Haltepunkt in ThreadEnde wäre man auch so an die Richtige Zeile gekommen, wenn man das nicht von selber erkennt "3 Mal klicken ... 0-2 ... ahhhhhh")

Das Programm zeigt die Exception natürlich nicht an, weil DU nicht die Exceptions im Thread behandelst.
Die VCL zeigt nur Exceptions im Hauptthread an und da auch nur die, welche nicht via Synchronize in andere Threads umgeleitet werden.

Grund, warum es beim 3. Klick knallt: if ID > 2 then
Zitat:
// Bei ID < 3 läuft alles durch. Es muss also Probleme beim Speichern geben.
Also, der erste Satz wurde gut erkannt, aber die Schlussfolgerung ist natürlich falsch, was der Debugger einem aber zeigen täte,
denn es knallt schon vor dem Speichern, beim Zugriff auf die Liste.

Zitat:
Delphi-Quellcode:
Inc(fObjectID);
lMyObject:=TMyObject.create(fObjectID);
Index:=fObjectList.Add(lMyObject);
Wieso bekommt das TMyObject eine andere ID einen anderen Index, als dann in ThreadEnde benutzt wird?

1: fObjectID=1 und Index=0 -> übersprungen
2: fObjectID=2 und Index=1 -> übersprungen
3: fObjectID=3 und Index=2 -> ID=Index 3 gibt es nicht -> *peng


Und wehe du kommst auf die Idee ID-1 zu rechnen.
Man benutzt keine unabhängigen/unsynchronisierten Zähler für eine gemeinsame Sache
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Nov 2014 um 23:48 Uhr)
  Mit Zitat antworten Zitat
 


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 16:02 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