AGB  ·  Datenschutz  ·  Impressum  







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

Units...Access Violation...Sonderbar

Ein Thema von Flippo · begonnen am 4. Dez 2005 · letzter Beitrag vom 4. Dez 2005
Antwort Antwort
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#1

Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:08
Hallo,
falls der Titel etwas merkwürdig und nichtssagend wirkt, dass liegt daran das mein Problem mir nichts sagt und ich keine Ahnung hab woran es liegen könnte.
Ich habe eine extra unit Shake, in der ich die Function Full aufrufe, mit den Werten x=320,y=371,co=0.
Delphi-Quellcode:
function Full(x:integer;y:integer;co:integer):integer;
begin
   while ((Shake.P[co].x=1025) and (co<31)) do co:=co+1; // <<Problem
   if (co>30) then Full:=co else begin
   Shake.P[co].x:=x;
   Shake.P[co].y:=y;
   Shake.P[co+1].x:=0;
   Full:=co;
   end;
end;
Die Werte werden auch richtig von der Funktion übernommen, aber in der zeile die ich als Problem markiert habe wird der Wert von co, aus 0 zu 267313069 und ich bekomme meine Standard-Fehlermeldung:
EAccesViolation...Zugriffsverletzung bei Adresse 0044136F in Modul 'Project1.exe'. Lesen von Adresse 0000C0C3.
was kann das nur sein warum verändert der einfach ungefrag meinen Wert, das geht doch nicht, was mach ich nur falsch? Ich bin echt verzweifelt
danke schonmal im voraus
MFG
Flippo
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:15
Wenn es sich bei P um ein Objekt handelt, ist dieses möglicherweise nicht erzeugt worden?
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:25
Delphi-Quellcode:
unit Shake;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type

tMaus=class
public
x:integer;
y:integer;
end;

procedure Clear;
function Full(x:integer;y:integer;co:integer):integer;

var
P: array [1..30] of tMaus;
i:integer;

implementation

procedure Clear;
begin
   for i:= 1 to 30 do begin
   P[i]:=tMaus.create;
   P[i].x:=1025;
   end;
end;

function Full(x:integer;y:integer;co:integer):integer;
begin
   while ((Shake.P[co+1].x=1025) and (co<31)) do co:=co+1;//Geändert damit ich nicht auf 0 usw.
   if (co>30) then Full:=co else begin
   Shake.P[co].x:=x;
   Shake.P[co].y:=y;
   Shake.P[co+1].x:=0;
   Full:=co;
   end;
end;
end.
also clear wird im Programm vorher aufgerufen also sollte p doch eigentlich erzeugt sein oder, bin mir jetzz wo du das so sagst nichtmehr ganz sicher?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:28
Überleg doch mal: die Indizes deines Arrays gehen von 1 bis 30, du willst auf 0 zugreifen...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#5

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:39
Aus dem Grund sollte ein Array immer mit dem Index 0 beginnen.
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:41
Zitat:
Überleg doch mal: die Indizes deines Arrays gehen von 1 bis 30, du willst auf 0 zugreifen...
Nein will ich nicht, denn 0+1 (co wird hochgezählt) ist 1. Das kann es nicht sein hab zur Sicherheit auch schonmal ausprobiert, dass ist es leider definitiv nicht.
bzw. dieser Fehler ist es nicht
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:44
Doch, in der ersten Schleifenprüfung ist co doch noch nicht inkrementiert, und damit hat Khabarakh recht.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:47
ja schon hab ich ja auch geändert, aber was ich damit sagen wollte ist, dass das leider nicht den Fehler produziert den ich meinte. (ist mir halt zwischengerutscht weil ich dauernd was verändert hab)
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:54
Dafür wird er dir jetzt im 30. Schleifendurchlauf abschmieren--aus dem gleichen Grund (Indizierung außerhalb der zulässigen Reichweite).
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Flippo

Registriert seit: 26. Sep 2004
111 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Units...Access Violation...Sonderbar

  Alt 4. Dez 2005, 14:54
Ok jetz habbichs auch endlich kapiert, warn gleich zwei Denkfehler, die 31 war auchnoch zu groß nu kommt nixmehr.
Dankeschön
  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 10:33 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