AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zugriffsverletzung bei Nutzung Programm vom Server
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei Nutzung Programm vom Server

Ein Thema von zeras · begonnen am 10. Jul 2021 · letzter Beitrag vom 11. Jul 2021
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#1

AW: Zugriffsverletzung bei Nutzung Programm vom Server

  Alt 11. Jul 2021, 14:14
Der Grund des Problemes ist doch eigentlich egal, 'ne nichtssagende Meldung über eine Zugriffsverletzung sollte der Anwender nicht zu Gesicht bekommen.

Statt dessen könnte man ja versuchen den Fehler abzufangen und z. B. eine Meldung ala "Fehler bei der Programminitialisierung, bitte das Programm neu starten." oder sowas ausgeben. Eine Fehlermeldung mit Hilfe von JCLDebug kann einem dann sogar sagen, wo der Fehler aufgetreten ist. Das könnte dann z. B. so in der Art aussehen (MessageDLG):
Code:
---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 00455BF2 in Modul 'LogFileViewer.exe'. Lesen von Adresse 00000198

Fehlertyp: EAccessViolation
Sender: fmMainLogFileViewer [TfmMainLogFileViewer]

11.07.2021 14:45:20

Dateiname: LogFileViewer.exe
Fehleradresse: 00054BF2

Unit: Controls
Fehleradresse: 00455BF2
Modulname: Controls

Prozedur: TWinControl.GetControlCount
Prozeduroffset: 2
Zeilennummer: 0
Zeilenoffset: 0
---------------------------
OK  
---------------------------
(Logfile)
Code:
LogFileViewer | 2021.07.10 15.40.20,976 | Dateiname            : LogFileViewer.exe
LogFileViewer | 2021.07.10 15.40.20,976 | Fehlermeldung        : Zugriffsverletzung bei Adresse 00455BF2 in Modul 'LogFileViewer.exe'. Lesen von Adresse 00000198
LogFileViewer | 2021.07.10 15.40.20,976 | Fehlerklasse         : EAccessViolation
LogFileViewer | 2021.07.10 15.40.20,976 | Fehlerauslöser       : pc
LogFileViewer | 2021.07.10 15.40.20,976 | Klassenname          : TPageControl
LogFileViewer | 2021.07.10 15.40.20,976 | Unit                 : Controls
LogFileViewer | 2021.07.10 15.40.20,976 | Fehleradresse        : 00455BF2 (00054BF2)
LogFileViewer | 2021.07.10 15.40.20,976 | Modulname            : Controls
LogFileViewer | 2021.07.10 15.40.20,976 | Prozedur             : TWinControl.GetControlCount
LogFileViewer | 2021.07.10 15.40.20,976 | Prozeduroffset       : 2
LogFileViewer | 2021.07.10 15.40.20,976 | Modul                : 4194304 [400000]
oder aus 'nem anderen Programm:
Code:
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Dateiname            : FireFoxVerwaltung.exe
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Fehlermeldung        : Connection is not opened yet
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Fehlerklasse         : EZDatabaseError
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Fehlerauslöser       : tmStart
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Klassenname          : TSpecialTimer
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Unit                 : ZAbstractConnection
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Fehleradresse        : 005FCE4F (001FBE4F)
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Modulname            : ZAbstractConnection.pas
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Prozedur             : TZAbstractConnection.CheckConnected
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Prozeduroffset       : 31
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Zeilennummer         : 942
FireFoxVerwaltung | 2018.04.09 11.51.47,265 | Modul                : 4194304 [400000]
Mit der Angabe von Unit ZAbstractConnection und Zeilennummer 942 weiß man dann schon sehr genau, wo es hakt. Und die Fehlermeldung Connection is not opened yet sagt einem dann auch schon recht genau, was da wohl falschgelaufen ist. Beim Fehlerauslöser handelt es sich hier um die Prozedur tmStart. Damit hat man dann auch die passende Stelle, an der man zum Debuggen mal mit dem Setzen eines BreakPoints anfangen kann.

Das hilft dann bestimmt auch dabei herauszufinden, ob es sich wirklich um das vermutete Netzwerkproblem handelt oder eventuell doch was Anderes dazwischenschießt.

Man kann dann im Dialog direkt einen Abbrechenbutton statt eines OK-Buttons einbauen, der beim Wegklicken das Programm auf jeden Fall beendet.

Per ShellExecute könnte man dann sogar das Programm sich selbst starten lassen.

Achso:
Die Fehlerausgabe aus der JCLDebug sieht nicht so aus, sie stellt lediglich die entsprechenden Informationen zur Verfügung, das Aussehen der Fehlermeldung bzw. der Logausgabe muss man dann schon selbst machen. Oder halt den Exceptiondialog aus der JCL nutzen: https://www.delphipraxis.net/1326309-post19.html oder selbermachen https://www.delphipraxis.net/1326340-post26.html
  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 18:09 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