AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriffsverletzung bei Adresse 004539E6 im Modul Project1.ex
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei Adresse 004539E6 im Modul Project1.ex

Ein Thema von eif · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
eif

Registriert seit: 3. Mär 2007
8 Beiträge
 
#1

Zugriffsverletzung bei Adresse 004539E6 im Modul Project1.ex

  Alt 25. Mär 2007, 17:34
hi... will die systemzeit als integer ungerechnet in nem record speichern sollte ja nich so schwer sein...

Delphi-Quellcode:
        GetLocalTime(zeit1);
        start:=zeit1.wMilliseconds+zeit1.wSecond*1000+zeit1.wMinute*60000+zeit1.wHour*360000;

         m:=m+1;
         explode[m].zeit:=start;
         explode[m].x:=p1x;
         explode[m].y:=p1y;
das programm spukt auch keinen fehler aus.. nur sobald genau dies passieren soll sagt mit delphi:

"Im Projekt Project1.exe ist eine Exception der Klasse EAccesViolations afgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004539E6 im Modul 'Project1.exe'. Schreiben von Adresse 00000018'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzten."

weiß nich warum das so ist.. nur das problem hält mich ziemlich auf... bin ein delphi anfänger.. soll für info unterricht bomberman als facharbeit programmieren...

danke für eure hilfe... lg vom eif
Gehe nicht, wohin der Weg führen mag sondern dorthin, wo kein Weg ist und hinterlasse eine Spur...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Zugriffsverletzung bei Adresse 004539E6 im Modul Project

  Alt 25. Mär 2007, 18:02
Zitat von eif:
Delphi-Quellcode:
         m:=m+1;
         explode[m].zeit:=start;
         explode[m].x:=p1x;
         explode[m].y:=p1y;
das programm spukt auch keinen fehler aus.. nur sobald genau dies passieren soll sagt mit delphi:

"Im Projekt Project1.exe ist eine Exception der Klasse EAccesViolations afgetreten. ... "
weiß nich warum das so ist..
Hi,
dass Du den Teil postest, für den der Compiler keinen Fehler meldet ist dann aber schon eher verwunderlich. Da steckt dann (syntaktisch) sicherlich auch kein Fehler drin. Interessant wäre dazu dann noch der Aufruf und was Du vorher machst, ganz ohne fällt es deutlich schwerer Dir zu helfen!

An sich wird der Fehler EAccessViolation immer dann ausgelöst, wenn Du auf einen ungültigen Speicherbereich zugreifen möchtest. Dazu gehören Objekt-Referenzen, die nicht auf ein Objekt zeigen oder Zugriffe auf Zeiger und Arrays, die nicht initialisiert wurden. Hier würde ich mal grob darauf tippen, dass es an dem zitierten Code-Ausschnitt liegt. Welchen Wert hat m+1? Und was steht im Array explode an dieser Stelle? Ist da schon etwas? Ist das ein gültiger Index? Usw...
Wahrscheinlich findet hier der Zugriff auf eine ungültige Speicherstelle statt.

An sich kannst Du den Fehler eingrenzen, in dem Du in deinem Quellcode einen Breakpoint (F5) in der Zeile wo die Methode aufgerufen wird setzt. Dann springst Du mit F7 in die Einzelschritt ausführung und läufst über die Zeilen mit F8 rüber oder gehst auch dort mit F7 in die jeweiligen einzelnen Schritte (soweit welche stattfinden). Damit solltest Du die Zeile die den Fehler auslöst recht schnell finden. Während das Programm unterbrochen ist (Du also das Weiterlaufen steuerst) kannst Du mit STRG+F7 auch die Werte der Variablen und Methoden auswerten!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
eif

Registriert seit: 3. Mär 2007
8 Beiträge
 
#3

Re: Zugriffsverletzung bei Adresse 004539E6 im Modul Project

  Alt 25. Mär 2007, 18:22
hm.. also... das array explode...

Delphi-Quellcode:
type
  TArray = RECORD
     zeit,x,y,:integer;
     end;

  TName2 = array[1..1000] of TArray;
der wert m ist bei start des programms 0
sobald eine bombe gelegt wird:

Delphi-Quellcode:
   if chr(Key) = 'Qthen
       begin
         p1a:='bombe.bmp';
         x:=p1x;
         y:=p1y;
         GetLocalTime(zeit1);
         start:=zeit1.wMilliseconds+zeit1.wSecond*1000+zeit1.wMinute*60000+zeit1.wHour*360000;

         m:=m+1;
         explode[m].zeit:=start;
         explode[m].x:=p1x;
         explode[m].y:=p1y;

         explodieren;
       end;
also die werte für x und y koordinate sowie der integerwert für die systemzeit werden explode zugeordnet und das schlägt fehl bei
 explode[m].zeit:=start; also sobald ich das Q drücke um die bombe zu legen sagt mir delphi den fehler zugriffsverletzung blabla an.. bis dahin läuft alles glatt.. auch in einzelschritten... und ab da geht nix mehr... und das is für mich eben unverständlich...

falls du mir weiter helfen willst... hab auch icq ^^ 305375469 da könnt ich dir auch ma das prog schichen oder so...

lg vom eif ^^
Gehe nicht, wohin der Weg führen mag sondern dorthin, wo kein Weg ist und hinterlasse eine Spur...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Zugriffsverletzung bei Adresse 004539E6 im Modul Project

  Alt 25. Mär 2007, 19:57
Zitat von eif:
hm.. also... das array explode...

Delphi-Quellcode:
type
  TArray = RECORD
     zeit,x,y,:integer;
     end;

  TName2 = array[1..1000] of TArray;
Äh, wo ist jetzt explode? Also wo deklarierst Du explode (denke mal der Typ ist dann TName2?
Initialisierst Du m denn?


Zitat von eif:
also sobald ich das Q drücke um die bombe zu legen sagt mir delphi den fehler zugriffsverletzung blabla an.. bis dahin läuft alles glatt.. auch in einzelschritten... und ab da geht nix mehr... und das is für mich eben unverständlich...
Nochmal zu den Einzelschritten, wann genau kommt denn dort der Fehler? In der Zeile mit der Zuweisung? Oder springt er dort nur hin, wenn Du Q drückst und eben nicht im Einzelschrittmodus?
Du hast ja eine Methode, die das drücken einer Taste behandelt, setz einfach dort den Breakpoint und lauf dann in einzelnen Schritten weiter und schau ob der immer macht, was Du erwartest. Solltest Du das schon getan haben und der Fehler taucht eben bei
explode[m].zeit:=start; auf, dann wäre hier wie gesagt interessant wo explode wie deklariert wurde und welchen Wert m zu dem Zeitpunkt (des Fehlers) hat. Das kannst Du wie gesagt durch das Auswerten ermitteln (oder kurz Maus drüber lassen oder STRG+auf m klicken).

Zitat von eif:
falls du mir weiter helfen willst... hab auch icq ^^ 305375469 da könnt ich dir auch ma das prog schichen oder so...
Ok, dazu erstmal: Ich hab kein ICQ. Dann wäre da natürlich der Sinn dieses Forums, der darin liegt, dass Leute mit ähnlichen/gleichen Problemen sicherlich auch ICQ haben aber noch viel schöner hier nachlesen können wie man ein Fehler behebt.
Und zu guter Letzt wären da auch noch die Regeln des Forums, die ganz klar sagen, dass hier keine Aufgaben für Schule/Uni/etc. gelöst werden. Für Dich wäre der Nutzen (und das Erfolgsgefühl) auch sehr beschränkt, wenn jmd. anderes den Fehler findet und korrigiert. Dann hast Du beim nächsten mal das gleiche Problem und keine Lösung. Besser Du findest den selbst (mit Hilfe), spätestens in der nächsten Klausur zahlt sich dann aus

Aber natürlich helfe ich (und der Rest der DP) sicher gerne weiter!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
eif

Registriert seit: 3. Mär 2007
8 Beiträge
 
#5

Re: Zugriffsverletzung bei Adresse 004539E6 im Modul Project

  Alt 25. Mär 2007, 20:25
also der fehler tritt genau dann auf wenn ich q drücke... also OnKeyDown dann ermittelt der die variablen/weist die werte zu... explode[m].zeit kriegt seinen wert noch... also hab noch was kleines geändert... aber dann explode[m].x macht er nicht mehr...
Gehe nicht, wohin der Weg führen mag sondern dorthin, wo kein Weg ist und hinterlasse eine Spur...
  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 09:31 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