AGB  ·  Datenschutz  ·  Impressum  







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

Zugriffsverletzung ausfindig machen

Ein Thema von hirnstroem · begonnen am 17. Nov 2006 · letzter Beitrag vom 17. Nov 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 07:39
'loha Folks,

immer wieder taucht folgende Fehlermeldung auf, deren Ursprung mir sehr schleierhaft ist:

Zugriffsverletzung bei Adresse 0056155 in Modul 'FACTS.exe'. Lesen von Adresse 00000000.

Kann ich irgendwie auf schnellem Weg ausfindig machen, woher diese Fehlermeldung stammt, bzw. weshalb sie ausgelöst wird?

Einzelne Anweisungen abzuarbeiten (F7) würde in stunden- wenn nicht sogar tagelangem "die-selbe-Taste-Drücken" enden.

Trotz der Fehlermeldung funktionieren sämtliche Abläufe fehlerlos.

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 07:41
Dugreifst auf eine nicht Intantieertes Objekt zu.
Markus Kinzler
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 07:52
Und um die Stelle zu finden benutzt man Tools wie MadExpert oder Eurekalog.
Dann bekommst du einen CallStack und kannst sehen, wo die Zugriffsverletzung aufgetreten ist.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 07:52
Und einfach mal in den Debugger-Optionen ankreuzen, das Delphi bei einer Exception anhalten soll. Dann zeigt die IDE dir sogar genau die Zeile, wo das auftritt.
[edit] und über die Debugger-Fenster->Call Stack siehst Du dann auch eventuell den Grund dafür[/edit]
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 08:20
madExcept habe ich bereits versucht, wenn es aktiv ist, tritt der Fehler gar nicht mehr auf. Dies ist natürlich nicht wirklich zufriedenstellend.

Dass der Debugger auf Exceptions reagieren und die Applikation anhalten soll, weiss er.

Werde mir Eurekalog noch zu Gemüte führen.

Danke und Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 08:33
Den Ort der Entstehung habe ich gefunden, weshalb der Code Fehler ausspuckt bleibt mir hingegen noch immer ein Rätsel:

Delphi-Quellcode:
function HexStrToInt(str: string): integer;
var
  ColorInteger: integer;
  Einer, Zehner: Integer;
  ColorString: string;
  HexString: String;
begin
    Einer:=0;
    Zehner:=0;
    HexString:=str;
    if Length(HexString)=2 then
    begin
      try ColorString:=copy(HexString,length(HexString)-1,2); except end;

      if ColorString[1] in ['0'..'9'] then Zehner:= Ord(ColorString[1]) - 48
      else if ColorString[1] in ['A'..'F'] then Zehner:= Ord(ColorString[1]) - 55;

      if ColorString[2] in ['0'..'9'] then Einer:= Ord(ColorString[2]) - 48
      else if ColorString[2] in ['A'..'F'] then Einer:= Ord(ColorString[2]) - 55;
    end
    else // length =1
    begin
      try ColorString:=copy(HexString,length(HexString),1); except end;
      Zehner:=0;
      if ColorString[1] in ['0'..'9'] then Einer:= Ord(ColorString[1]) - 48 // hier tritt der Fehler auf
      else if ColorString[1] in ['A'..'F'] then Einer:= Ord(ColorString[1]) - 55;
    end;
    ColorInteger:=16*Zehner+Einer;
    Result:=ColorInteger;
end;
inde deus abest
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#7

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 08:35
Evtl. ist der String leer.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 08:39
Möglich wärs, habe die entsprechende Stelle jetzt einfach mit einen try except Block verpackt, dann passt das schon.
inde deus abest
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 08:56
Zitat von hirnstroem:
Möglich wärs, habe die entsprechende Stelle jetzt einfach mit einen try except Block verpackt, dann passt das schon.
Nein passt nicht! Das Copy in einem Try-Except Block zu verpacken reicht nicht, du musst dann schon die entsprechenden Zugriffe auf dein Colorstring kapseln. Besser wäre es aber an dieser Stelle alles noch mal mit einem
Delphi-Quellcode:
if Length( ColorString) = 1 then begin
....
end;
abzufangen. Zugriffsverletzungen müssen nicht sein!

Gruß
Jörg
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Zugriffsverletzung ausfindig machen

  Alt 17. Nov 2006, 11:00
Vielleicht kann man den Fehler auch anders umgehen:

Value := StrToIntDef('$' + str, 0); Oder übersehe ich da etwas?

Gruß Hawkeye
  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 11:43 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