AGB  ·  Datenschutz  ·  Impressum  







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

Fehler vor OnCreate finden

Ein Thema von Ykcim · begonnen am 18. Feb 2019 · letzter Beitrag vom 21. Feb 2019
Antwort Antwort
Seite 1 von 2  1 2      
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 13:12
Hallo,

Zitat:
Und es gibt keine Ereignisbehandlung für das Click in diesem Grid?
Das Problem ist, dass die OnClick wahrscheinlich beim Füllen des Grids im FormCreate vom Grid selbst aufgerufen wird,
siehe CallStack Seite 1.
Heiko
  Mit Zitat antworten Zitat
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 13:57
Hallo,
Zitat:
Im Screenshot ist nicht wirklich viel "sinnvolles" zu sehen
Doch
Man muss den Callstack ja von unten nach oben lesen.

007e1f0e +1b3a NedCom.exe AdvGrid 41726 +667 TAdvStringGrid.WMLButtonUp
00454ef5 +0025 NedCom.exe System.SysUtils StrLCopy
005c0e57 +0057 NedCom.exe Vcl.Themes TUxThemeStyle.DoDrawText

Genauer das WMLButtonUp ist schon sehr komisch.
Das wird ja nicht vom Anwender erzeugt, sondern intern vom Grid in der WndProc.


Was ich auch schon mal hatte im Zusammenhang mit TMS und Laptop mit Touchscreen:
in Form1 Doppelklick auf ein Grid, Form2 öffnet sich, ein Mausklick von Form1 wurde an Form2 "durchgereicht".
Heiko
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 15:19
Hallo Zusammen,

vielen Dank für Eure Hilfe! Ich versuche nachfolgende zu antworten:

Zitat:
Nutzt Du die JEDIs? Dann nimm dort den TJvDebugHandler, der hilft Dir an Fehlerursachen zu gelangen.
Nein, benutze ich nicht.


Zitat:
Und es gibt keine Ereignisbehandlung für das Click in diesem Grid?
Frame_ListendruckUnit 284 +1 TFrame_Listendruck.Grid_not_printedClick
Sherlock
Es gibt ein OnClick-Event. Zu Testzwecken habe ich den Inhalt vollständig auskommentiert, damit wenn das Event aufgerufen wird nichts gemacht wird, aber das hatte keine Auswirkung...

Zitat:
verlagere das Füllen des Grids ins FormActivate
Das Grid wird zu diesem Zeitpunkt nicht gefüllt. Damit Daten in das Grid kommen, muss der User erst eine Auswahl treffen.

Zitat:
Das der Fehler nur auf diesen beiden Rechnern entsteht, hängt damit zusammen, dass sie (vermutlich) sehr ähnlich sind, sowohl in Bezug auf Hard- als auch auf Software. Eventuell sind sie aus irgendeinem Grund etwas schneller oder etwas langsamer oder laden andere Treiber ... Sie stolpern über einen versteckten Fehler, der auf den anderen Systemen (ggfls. bei nur marginaler Änderung von was auch immer) ebenfalls auftreten kann. So ein bisschen sowas wie 'ne Zeitbombe.
Die Rechner sind sehr ähnlich von der Hardware her, aber auf dem einen habe ich Windows10 aufspielen lassen, weil ich dachte, dass das BS einen Schuss hatte und das andere hat Windows7 als BS. Beide BS sind auch auf anderen Rechnern, die ohne Probleme laufen. Ob es an der Hardware liegt, weiß ich nicht.
Zeitbombe: Das sehe ich auch so, deshalb beschäftige ich mich damit, obwohl es noch kein Ausfall auf einer Produktivmaschine gibt.

Zitat:
Hast Du eine MAP-Datei?
Ja, habe ich. Sie hat 237.000 Zeilen...

Zitat:
Findest Du in ihr die Fehleradresse?
Im BugReport steht Folgendes: Zugriffsverletzung bei Adresse 005345D4 in Modul 'NedCom.exe'. Lesen von Adresse 00000260.
Die 005345D4 finde ich nicht, aber die 00000260:
Zitat:
0001:004974EC 00000260 C=CODE S=.text G=(none) M=AdvDWM ACBP=A9
0001:009BBE50 00000260 C=CODE S=.text G=(none) M=_UXlsBaseRecords.TDefaultRowHeightRecord ACBP=A9
0001:00B3E8E8 00000260 C=CODE S=.text G=(none) M=_UOle2Properties.TPropIdOffset ACBP=A9
Aber leider weiß ich nicht, wie mir das weiterhelfen kann...

Zitat:
Was ich auch schon mal hatte im Zusammenhang mit TMS und Laptop mit Touchscreen:
in Form1 Doppelklick auf ein Grid, Form2 öffnet sich, ein Mausklick von Form1 wurde an Form2 "durchgereicht".
Beide Rechner sind Laptops ohne TouchScreen


Zitat:
Genauer das WMLButtonUp ist schon sehr komisch.
Das wird ja nicht vom Anwender erzeugt, sondern intern vom Grid in der WndProc.
Das ist meine Sorge, dass es in einem Teil passiert, auf den ich keinen Einfluss habe...

Hat jemand vielleicht ein Idee, warum das mit dem Remote-Debugger nicht klappt? Vielleicht würde ich ja so der Ursache auf die Spur kommen...

Vielen Dank für Eure Mühe - diese Art der Fehlersuche ist für mich Neuland!

LG Patrick
Patrick

Geändert von Ykcim (20. Feb 2019 um 15:38 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.385 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 15:25
007e1f0e +1b3a NedCom.exe AdvGrid 41726 +667 TAdvStringGrid.WMLButtonUp
00454ef5 +0025 NedCom.exe System.SysUtils StrLCopy
005c0e57 +0057 NedCom.exe Vcl.Themes TUxThemeStyle.DoDrawText
Nur so als Idee, könnte es sein, dass StrLCopy Speicher überschreibt?
Dann kam mir beim googeln nach "TUxThemeStyle.DoDrawText" das da: https://stackoverflow.com/questions/...-of-the-screen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 15:41
Hier der BugReport - etwas gekürzt um doppelte Einträge
Angehängte Dateien
Dateityp: txt bugreport_klein.txt (89,7 KB, 5x aufgerufen)
Patrick
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:16
Such in der MAP-Datei bitte nach :005345D4.

Wenn das nicht da ist, nach :005345 und wenn das nicht da ist nach :0053.

Findest Du irgendwo hinter dem ersten "Line numbers" der MAP-Datei was dazu?

Wenn nein, könnte es sein, dass der konkrete Fehler nicht in dem Teil des Programmes geschieht, für den Du Quelltext besitzt, also z. B. Komponenten, für die Du nur die DCUs hast. (Gibt es sowas oder hast Du für alles auch die Quelltexte?)

Zitat von hoika:
MessageBox = Remote-Debugger für Arme
Ja, aber manchmal extrem hilfreich, wenn man überhauptnicht weiß, wo denn da was klemmt oder der Fehler halt mit dem Debugger nicht zu lokalisieren ist, weil der entweder garnicht bis zu der Stelle kommt oder eben (wie hier) der Fehler auf der Entwicklungsmaschine nicht zu reproduzieren ist.

@Ykcim

Schlimmstenfalls:

Pflastere jede, wirklich jede Prozedure am Anfang und am Ende mit ShowMessage ein:
Delphi-Quellcode:
// irgendwo am Anfang:
{$DEFINE MsgDebug}


Function TForm1.NameDerFunktion : keineAhnung;
begin
{$IFDEF MsgDebug}ShowMessage('Start NameDerFunktion');{$ENDIF}
  
... der eigentliche Funktionsinhalt.

{$IFDEF MsgDebug}ShowMessage('Ende NameDerFunktion');{$ENDIF}
end;
Durch den Kompilerschalter muss Du dann nicht alles wieder entfernen, bevor die Software in Betrieb geht. Den Kompilerschalter kannst Du dann von {$DEFINE MsgDebug} nach { $DEFINE MsgDebug} ändern und die Meldungen sind mit dem nächsten Kompilieren wieder weg.

Statt ShowMessage ... kannst Du auch 'ne Loggingfunktion nehmen, die diese Meldungen in 'ne Datei schreibt (sofern Du sowas gerade zur Verfügung hast).

Und nein, wirklich schön ist dieser Lösungsvorschlag nicht, aber als Notnagel kann man's schonmal durchgehen lassen
  Mit Zitat antworten Zitat
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:29
Hallo Delphi.Narium,
warum den Umweg über die Map-Datei?
Auf Seite 1 ist der komplette Call-Stack.

Der Fehler tritt intern im TAdvStringGrid auf,
weil der Inplace-Edit anzuzeigt wird.
Der Fehler sagt ja, dass das SetFocus des Inplace-Editors fehlschlägt.
Entweder ist das Grid oder der Frame nicht sichtbar,
oder siehe StrLCopy es wird Speicher bei Theming überschrieben.

Da fallen mir noch 2 Sachen ein
1. FastMM4 wegen dem möglichen Speicherüberschreiben
2. in den Grafikoptionen mal alle visuellen Effekte außer Kantenglättung deaktivieren
(rechte Maustaste auf Computer/dieser PC -> Erweiterte Systemeinstellungen -> Leistung)
Heiko

Geändert von hoika (20. Feb 2019 um 16:31 Uhr)
  Mit Zitat antworten Zitat
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:36
Hallo,
zu spät dein Post bemerkt.

Mir sind in der Dpr 2 Sachen aufgefallen
Application.CreateForm(TForm_LogIn, Form_LogIn); wird erzeugt, aber wohl nicht mehr gebraucht?

Application.Run;
Main.WindowState:=wsMaximized;
Das hat keine Wirkung, weil Delphi in der Run-Methode bleibt,
bis das Hauptprogramm (Main) beendet wird.


Aber jetzt zu deinem Post.
Was passiert, wenn du die DoLogin-Methode mal ausklammerst?
Vielleicht macht dein Login-Fenster ja was "kaputt".
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.367 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Fehler vor OnCreate finden

  Alt 21. Feb 2019, 08:12
Hier der BugReport - etwas gekürzt um doppelte Einträge
Ach jetzt sehe ich den Fehler...
Zitat:
exception class : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 005345D4 in Modul 'NedCom.exe'. Lesen von Adresse 00000260.

main thread ($1688):
005345d4 +000 NedCom.exe Vcl.Controls TWinControl.HandleAllocated
009cfc99 +069 NedCom.exe AdvCombo 1292 +7 TAdvCustomCombo.UpdateLabel
009d07cc +0f4 NedCom.exe AdvCombo 1534 +30 TAdvCustomCombo.SetBounds
0053ab74 +0ac NedCom.exe Vcl.Controls TMargins.SetControlBounds
0052ec41 +301 NedCom.exe Vcl.Controls TWinControl.ArrangeControl
0052ef3e +03a NedCom.exe Vcl.Controls DoPosition
0052f0bc +170 NedCom.exe Vcl.Controls DoAlign
0052f560 +0f0 NedCom.exe Vcl.Controls TWinControl.AlignControls
008dfad4 +018 NedCom.exe AdvToolBar 13168 +1 TAdvCustomToolBar.AlignControls
0052f6af +063 NedCom.exe Vcl.Controls TWinControl.AlignControl
0052fbbf +093 NedCom.exe Vcl.Controls TWinControl.RemoveControl
0052b007 +02f NedCom.exe Vcl.Controls TControl.SetParent
008f77a5 +471 NedCom.exe AdvToolBar 23534 +73 TAdvCustomToolBar.UpdateCompactWindow
008f85b2 +39e NedCom.exe AdvToolBar 23867 +67 TAdvCustomToolBar.SetCompact
0092e325 +405 NedCom.exe AdvToolBar 48323 +116 TAdvPage.UpdateAllToolBars
0092e32d +40d NedCom.exe AdvToolBar 48324 +117 TAdvPage.UpdateAllToolBars
0092bde0 +0fc NedCom.exe AdvToolBar 47353 +27 TAdvPage.Loaded
004824c4 +024 NedCom.exe System.Classes NotifyGlobalLoading
00482628 +070 NedCom.exe System.Classes InitInheritedComponent
005f716e +0c6 NedCom.exe Vcl.Forms TCustomForm.Create
0093b3cb +093 NedCom.exe AdvToolBar 55558 +11 TAdvToolBarForm.Create
0052a358 +030 NedCom.exe Vcl.Controls TControl.Notification
00601c76 +076 NedCom.exe Vcl.Forms TApplication.CreateForm
01432ebe +042 NedCom.exe NedCom 87 +5 initialization
77280177 +017 KERNEL32.DLL BaseThreadInitThunk
Man sieht hier, dass der Fehler beim Laden der Komponenten passiert. Da sollte der Support von TMS weiterhelfen können.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Fehler vor OnCreate finden

  Alt 21. Feb 2019, 14:03
Hallo Zusammen,
Ich habe die Ursache für mein Problem gefunden!
Ich hatte am Anfang mal eine Fehlermeldung, die irgendetwas mit Comboboxen zu tun hatte. Aber ich fand den Fehler dabei nicht heraus und habe den Weg nicht weiter verfolgt.
Zitat:
009cfc99 +069 NedCom.exe AdvCombo 1292 +7 TAdvCustomCombo.UpdateLabel
009d07cc +0f4 NedCom.exe AdvCombo 1534 +30 TAdvCustomCombo.SetBounds
Heute habe ich angefangen, Frame für Frame aus meinem Projekt heraus zu löschen. Das geht, weil die Frames untereinander keine Verweise haben. Allerdings hätte das sehr sehr lange gedauert.
Dann habe ich einfach mal zum Testen alle TDBLUComboauf meinem Ribbon Menü vom Hauptfenster gelöscht. Und siehe da auf einmal funktionierte es.

Ich habe in meinem Programm ein Ribbon Menü mit mehreren TabSheets. Auf diesen TabSheets liegt unter anderem eine TDBLUCombo, die sich Daten aus der Datenbank zur Auswahl holt.
Zur Erklärung, die Benutzer können dort andere Benutzer ihrer Abteilung auswählen und sehen dann deren Daten und arbeiten somit im Vertretungsfall in der anderen Datenumgebung , aber unter dem eigenen Login...
Von diesen TDBLUCombogibt es ca. 10 Stück, eines auf jedem TabSheet des Ribbon-Menüs.

Weil da etwas von UpdateLabel drinstand, habe ich alle TDBLUCombo wieder reingenommen und habe die Labels weggelassen. Und wieder funktionierte es.
Dann habe ich Schritt für Schritt bei jedem TDBLUCombo das Label wieder hinzugefügt. Bei 7 gab es keine Probleme aber bei 3 TDBLUCombo kam dann wieder der Fehler.
Rausschmeißen, neu einbinden oder eine der funktionierenden kopieren brachte leider keinen Erfolg.

Zur Klarstellung:
Die Gleiche Komponente, die gleiche Datenbasis, das gleiche Ribbon-Menue, den gleichen Label-Text, auf unterschiedlichen Tabs des Ribbons...

Keine Ahnung, was den Fehler auslöst. Ich habe jetzt bei diesen TDBLUCombo die Labels durch TLabels ersetzt und es funktioniert wunderbar.





An dieser Stelle möchte ich mich herzlich bedanken - diese Forum ist spitze, weil Ihr Euch echt Zeit und Mühe gebt, "Verzweifelten" zu helfen!
Vielen Dank dafür!!!

Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:44 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