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
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 15:50
Hallo,
Zitat:
Wo steht da etwas von FormCreate? Das ist ein normaler Mausklick, durch den das Editieren einer Zelle ausgeführt wird
Es steht im Titel "Fehler vor OnCreate", also nix Mausklick.
Und es stet ja auch kein ButtonClick-Event im MadExcept-Log auf Seite 1.
Ausserdem gibt es kein WMLButtonDown, sonder nur ein WMLButtonUp;

Noch mal an den Threadersteller:
Woher weißt Du, dass es in/vorm OnCreate passiert?
So wie ich es verstanden habe, hast Du ein Hauptprogramm,
was ein anderes Form startet und dort kommt schon beim Erzeugen (nicht in FormActivate) der Fehler?

Was mir noch aufgefallen ist. Das Grid steckt ja in einem Frame, ist der vielleicht nicht sichtbar oder hat den Focus nicht?!
Schreib mal in TFrame_Listendruck.Grid_not_printedClick eine einfache MessageBox als erste Zeile,
um zu sehen, wann die Klick-Methode aufgerufen wird.
Ausserdem noch eine MessageBox zu Beginn und Ende des FormActivate.

MessageBox = Remote-Debugger für Arme
Heiko

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

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:26
Hallo hoika,

Zitat:
So wie ich es verstanden habe, hast Du ein Hauptprogramm,
was ein anderes Form startet und dort kommt schon beim Erzeugen (nicht in FormActivate) der Fehler?
Das Programm ruft bei Aufruf ein LogIn-Fenster auf (DoLogin):
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  if ( not DoLogin ) then
      Exit;
  Application.CreateForm(TMain, Main);
  Application.CreateForm(TForm_Zeichnungen, Form_Zeichnungen);
  Application.CreateForm(TForm_Filter, Form_Filter);
  Application.CreateForm(TForm_Passwort, Form_Passwort);
  Application.CreateForm(TForm_LogIn, Form_LogIn);
  Application.CreateForm(TForm_Start, Form_Start);
  Application.CreateForm(TForm_Return, Form_Return);
  Application.Run;
  Main.WindowState:=wsMaximized;
end.
Der Benutzer gibt seinen LogIn-Namen und ein Passwort ein. Wenn beides passt, wird über eine Datenbankabfrage geprüft, schließt sich das LogIn-Fenster und das Programm setzt den Start fort.
Die Eingabe kann ich auch machen. Allerdings muss ich jedes Mal meinen Benutzer neu eingeben. In der OnShow-Procedure des Main-Form wird der Benutzer in eine Tabelle geschrieben, gemeinsame mit dem Computernamen. Beim öffnen des LogIn-Fensters wird geprüft, ob sich dieser Rechner schon mal angemeldet. Wenn ja, wird der letzte Benutzer-LogIn in das Eingabefeld geschrieben. Das Passiert nicht. Also tritt der Fehler vorher auf.

Zitat:
Woher weißt Du, dass es in/vorm OnCreate passiert?
Ich habe mir auch einen Remote_Debugger für Arme gebaut:
Ich habe in der Procedure des Ok-Buttons des LogIn-Fensters und in der onCreate Procedure des Main-Forms und in der onShow-Procedure des Main-Forms mit Hilfe einer TStringList eine Datei schreiben lassen, wobei ich nahzu Zeileweise den Durchlauf den Programm-Codes logge. Diese Datei habe ich dann auf den FileServer abgelegt - immer unter dem Namen des Rechners mit Datum und Uhrzeit. Die Datei würde auch im Exception-Fall geschrieben.
Bei den Problem-Rechnern wird die Datei im Login-Fenster geschrieben, aber keine vom Main-Form. Bei allen anderen Rechnern klappt das.

Deshalb gehe ich davon aus, dass der Fehler nach dem erfolgreichen LogIn, aber vor dem onCreate des Main-Form auftritt. Aber was ist dazwischen und wie kann ich das loggen?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:32
Hallo Delphi.Narium

Zitat:
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?)
Habe leider nichts gefunden. Neben den Standard-Komponenten habe ich die TMS-Komponenten, UniDac und JamShellBrowser verbaut.
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:37
Zitat:
2. in den Grafikoptionen mal alle visuellen Effekte außer Kantenglättung deaktivieren
(rechte Maustaste auf Computer/dieser PC -> Erweiterte Systemeinstellungen -> Leistung)
Das hatte leider keinen Effekt...
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:41
Zitat:
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.
Vielen Dank, habe ich geändert...
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  if ( not DoLogin ) then
      Exit;
  Application.CreateForm(TMain, Main);
  Application.CreateForm(TForm_Zeichnungen, Form_Zeichnungen);
  Application.CreateForm(TForm_Filter, Form_Filter);
  Application.CreateForm(TForm_Passwort, Form_Passwort);
  Application.CreateForm(TForm_Start, Form_Start);
  Application.CreateForm(TForm_Return, Form_Return);
  Main.WindowState:=wsMaximized;
  Application.Run;
end.
Patrick
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:46
Ok, Fehler nicht in MAP-Datei, damit ist dann klar, das hoikas Ansatz der einzig verbleibende Weg zum Finden des Fehlers ist.
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  if DoLogin then begin
    Application.CreateForm(TMain, Main);
    Application.CreateForm(TForm_Zeichnungen, Form_Zeichnungen);
    Application.CreateForm(TForm_Filter, Form_Filter);
    Application.CreateForm(TForm_Passwort, Form_Passwort);
    Application.CreateForm(TForm_Start, Form_Start);
    Application.CreateForm(TForm_Return, Form_Return);
    Main.WindowState:=wsMaximized;
    Application.Run;
  end;
end.
In welchen Formularen wird das TAdvStringGrid genutzt?

Könnte eventuell eine Änderung der Application.CreateForm ... - Reihenfolge was ändern (außer TMain, das als erstes Formular ja zum Hauptformular der Anwendung wird).
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 16:52
Zitat:
In welchen Formularen wird das TAdvStringGrid genutzt?
Die Anwendung ist ziemlich groß - besteht aus 29 Frames und 4 Forms. In Summe sind es über 30 TAdvStringLists, die beim Design auf den Frames / Forms liegen. Darüber hinaus können zu einem späteren Zeitpunkt auch noch viele dynamisch erstellt werden, wenn Daten von Maschinen abgerufen werden. Aber das passiert nur nach einer User-Aktivität...
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 17:03
Ich habe folgenden Test gemacht:
Ich habe ein neues Programm in Delphi erstellt, in das ich das Frame ListenDruck, auf dem das Grid_not_printed liegt eingefügt. Alle benötigten Units ebenfalls, damit ich das Ganze kompilieren konnte.
Diese Programm öffnet sich auf dem Problem-Rechner ohne Probleme...

Ach ja, und wenn ich dort in eine Zelle klicke - sind natürlich leer - greift auf ShowMessage, die ich vorhin testweise eingebaut hatte. Die Message kommt aber bei beiden Programmen nicht beim Starten...

LG Patrick
Patrick
  Mit Zitat antworten Zitat
hoika

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

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 17:51
Hallo,
Moment!

Was heißt "Message kommt nicht beim Starten".

Hast du das DoLogin jetzt mal auskommentiert?
Was sagt FastMM4?

Ich denke, du reißt da irgendwas weg im Speicher.
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#10

AW: Fehler vor OnCreate finden

  Alt 20. Feb 2019, 18:16
Eigentlich fällt mir nix mehr ein.

Login geht noch, danach ist "Schicht im Schacht".

Breakpoint vor das Application.CreateForm(TMain, Main); und dann im Debugger, auf Deiner Entwicklungsmaschine, schrittweise (oder jeweils bis zur Rückkehr einer Funktion/Prozedure) durchgehen und schauen, wann und wo Du dort die Zeilen siehst, die Dir durch die Fehlermeldung schon als Ursache bekannt vorkommen oder irgendwelche Aufrufe stattfinden, die eines der Grids betreffen (könnten).

Dabei müsstest Du dann in etwa mitbekommen, was da in welcher Reihenfolge abgearbeitet wird. Eventuell findest Du eine Möglichkeit diese Abarbeitungsreihenfolge durch gezieltes Verschieben oder Ändern der Programmlogik in einen "ungefährlichen Bereich" zu manövrieren.

Und ja: Das ist seeeeeehr zeitaufwändig.

Kannst Du die Entwicklungsumgebung (mit vertretbarem Aufwand) auch auf einem der Laptops installieren, um so direkt "auf dem Übeltäter" auf Fehlersuche zu gehen? Eventuell geht ja nur deshalb was in die Hose, weil auf diesen Geräten irgendeine DLL, ein Treiber ... sich anders verhält, weil auf Gerätebesonderheiten eingegangen werden muss. Und wenn dadrin dann ein Fehler ist oder etwas anders, als von den Entwicklern des TAdvStringGrid erwartet, sieht's für Dich eher übelst aus.

Gibt es irgendwelche Meldungen in den Ereignisprotokollen der Laptops, die auf eine (wie auch immer geartet) Problematik der Systeme hindeuten?
  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 00:33 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