AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zugriffsverletzung bei Application.HandleMessage

Zugriffsverletzung bei Application.HandleMessage

Ein Thema von Caps · begonnen am 18. Feb 2013 · letzter Beitrag vom 4. Mär 2013
Antwort Antwort
Seite 1 von 3  1 23   
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#1

Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 12:16
Hallo DP,

ich bin ein wenig ratlos, weil ich eine Zugriffsverletzung in folgendem Codeabschnitt bekomme:

Delphi-Quellcode:
FormDATKalkUebernahme.Show;
Repeat
  Application.HandleMessage;
until FormDATKalkUebernahme.ModalResult <> mrNone;
Die Exception meint: "Zugriffsverletzung bei Adresse 00000017. Lesen von Adresse 00000017" .
Ich gebe zu, das sind nicht viele Informationen und sehr wenig Code, aber ich brauche eigentlich nur einen hilfreichen Hinweis dazu, wie ich das Ding debuggen kann .
Ich kann zwar im Schrittmodus über die Schleife laufen, aber alles was ich bekomme ist diese Meldung. Leider lassen sich die mitgelieferten Delphi-Units nicht debuggen (oder doch?), daher stehe ich auf dem Schlauch, wie ich die Ursache dieser Exception finden könnte.

Noch ein paar Informationen dazu:
Die Form FormDATKalkUebernahme existiert zum Zeitpunkt der Schleife (sonst ginge das Show ja bereits schief) und hat ein paar Controls drauf.
In dem Moment, in dem ein Tastaturereignis oder ein Mausereignis auf einer Control "passiert", tritt der Fehler auf, d.h. im Schrittmodus kann ich auf ein Control klicken - zunächst passiert nix - dann drücke ich ein paar mal F8 in der IDE, solange bis (vermutlich) die Mausmessage an der Reihe ist, und dann knallt's.
Ein Klick auf das Panel, auf dem die Controls liegen bringt keine Exception.

Also zusammenfassend: Wie kann ich Application.HandleMessage debuggen?

Jemand ne Idee?
Zu hülf!

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 12:23
Delphi-Units kannst Du schon debuggen, siehe Projekteinstellungen -> Delphi Compiler -> Compiling -> Debugging -> Use debug .dcus.

Aber...
  • Wolltest Du evtl. ProcessMessages statt HandleMessage aufrufen?
  • Der Debugger bringt nicht viel, da er nicht zu den Empfängern von Nachrichten springt.
  • Wenn beide Formulare parallel bedienbar sein sollen (sonst wäre ShowModal statt der Schleife ja einfacher), warum dann nicht per Event mitteilen, wenn das Übernahme-Fenster geschlossen wird?

Oder anders ausgedrückt: Konzept prüfen und überarbeiten dürfte deutlich weniger zeitinsensiv sein als alle möglichen Empfänger von Nachrichten zu prüfen.
  Mit Zitat antworten Zitat
generic

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

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 12:29
Warum nutzt du nicht form.showmodal ?
Dann brauchst du die Schleife nicht.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#4

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 12:36
Hi, danke für die schnellen Antworten!

@generic:
ShowModal kann ich leider nicht benutzen, weil unsere Formverwaltung auf die gezeigte Weise funktioniert, sorry, aber danke für den Vorschlag. Weitere Ideen?

@CCRDude:
1) Ich werde das mal probieren, die Delphi-Units zu debuggen, danke.

2) Konzept überarbeiten ist leider nicht möglich, weil unsere komplette Anwendung so funktioniert.
Ich werde mal ProcessMessages verwenden, aber da alle unsere Forms auf diese Weise mit HandleMessage funktionieren, denke ich, dass da nicht der Fehler liegen kann.

Ich würde halt gern wissen, welche Nachricht das ist, die da "scheitert".

Die Forms sollen nicht beide gleichzeitig bedienbar sein, aber sie werden auf eine Weise auf das Hauptformular gezeichnet, die diese komische Art der Anzeige erfordert, sorry.


Danke für die Antworten, aber ich glaube, das behebt das Problem nicht...
Sorry
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#5

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:16
Der Fehler tritt innerhalb von TApplication.ProcessMessage in der Zeile "if PeekMessage(..." auf.
Die wird leider aus einer Windows-DLL geholt, hier ist also Schluss...

Mal sehen... das ist ja ******, wat mach ick denn da jetze... ist es möglich die betreffende Message irgendwie zu übersetzen/ verständlich zu machen? Den Message-Empfänger herauszufinden, o.ä.?

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.986 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:20
2) Konzept überarbeiten ist leider nicht möglich, weil unsere komplette Anwendung so funktioniert.
Tut sie offensichtlich nicht...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#7

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:24
2) Konzept überarbeiten ist leider nicht möglich, weil unsere komplette Anwendung so funktioniert.
Tut sie offensichtlich nicht...
Das ist spitzfindig aber (momentan) korrekt.

Hast Du vllt. ne Idee, wie ich aus der Message (TMsg.Message) irgendwas herauslesen kann, was mich weiterbringt? Also ich bin im Besitz der Message, welche den Fehler auslöst, jetzt muss ich nur noch herausfinden, was genau der Fehler ist, und wo er ausgelöst wird...

Wie gesagt: näher als bis zu "PeekMessage" komme ich leider nicht heran, es ist zum Tyrannosaurusmelken.

Edit:

Ich meine: wie kann ich aus einer TMsg-Nachricht was rauslesen, nicht nur aus TMsg.Message...
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (18. Feb 2013 um 13:26 Uhr) Grund: Nein, ich meinte doch...
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:29
ist das nur bei handlemessage, oder auch bei processmessage?
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#9

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:33
Auch bei ProcessMessages leider

Edit:

Und ich muss korrigieren: es tritt auch auf, wenn ich auf das Panel klicke (s. Ursprungsposting)...
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (18. Feb 2013 um 13:39 Uhr)
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Zugriffsverletzung bei Application.HandleMessage

  Alt 18. Feb 2013, 13:38
Gibt es evtl Timer, die vielleicht zuschlagen? Ist es beim ersten Durchlauf, oder bei einem zufälligen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:59 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