![]() |
Array Zugriffsverletzung
Delphi-Quellcode:
unit mWürfel;
interface type TWürfel=Class(TObject) private { Private-Deklarationen } public { Public-Deklarationen } PunkteArray: Array[1..8, 1..3] of Integer; function GetPunkte(Punkt, Koordinate: Integer): Integer; procedure SetPunkte(Punkt, Koordinate, Wert: Integer); end; implementation function TWürfel.GetPunkte(Punkt, Koordinate: Integer) :Integer; begin Result:=PunkteArray[Punkt,Koordinate]; end; procedure TWürfel.SetPunkte(Punkt, Koordinate, Wert: Integer); begin PunkteArray[Punkt,Koordinate]:=Wert; end; end.
Delphi-Quellcode:
Erste Gelegenheit für Exception bei $75079617. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 004AE2FC in Modul 'Engine.exe'. Schreiben von Adresse 00000008'. Prozess Engine.exe (4720)
PunkteArray[Punkt,Koordinate]:=Wert; //Hier bekomme ich die Fehlermeldung
Irgendwie stehe ich voll auf dem Schlauch =/ .... |
Re: Array Zugriffsverletzung
Hat vielleicht nichts mit deinem Problem zu tun, aber auf Umlaute würde ich persönlich verzichten. Aus dem "Würfel" würde ich einen "Wuerfel" machen!
|
Re: Array Zugriffsverletzung
Ich würde mal sagen Punkt ist größer als 8 oder Koordinate ist größer als 3 oder beides.
|
Re: Array Zugriffsverletzung
1. auf Umlaute (würfel) verzeichten
2.
Delphi-Quellcode:
Dann wird wohl entweder Punkt kleiner als 1 oder größer als 8 sein
PunkteArray[Punkt,Koordinate]:=Wert;
oder Koordinate wird kleiner als 1 oder größer als 3 sein. Mach mal folgendes uns poste das Ergebnis dann:
Delphi-Quellcode:
showmessage(IntToStr(Punkt) + ', ' + IntToStr(Koordinate));
//PunkteArray[Punkt,Koordinate]:=Wert; |
Re: Array Zugriffsverletzung
Delphi-Quellcode:
selbe fehlermeldung an den übergebenen werten kann es nicht liegen .... beide liegen in Wertebeereich 1..3 und 1..8
PunkteArray[2,2]:=3;
|
Re: Array Zugriffsverletzung
vielleicht einfach nur vergessen zu createn?
|
Re: Array Zugriffsverletzung
ü:
Delphi-Quellcode:
[Error] Unit1.pas(12): Illegal character in input file: 'ü' ($FC)
dann mach ich:
Delphi-Quellcode:
und der Rest tut. Also was ist passiert? Du hast die Klasse TWuerfel deklariert. Genaugenommen handelt es sich dabei um einen Satz von Funktionen, die beim Aufruf stets einen Zeiger auf einen Speicherbereich mitbekommen. durch den Create() - Konstruktor wird der eigentlich für eine Instanz (dem eigentlichen Objekt) benötigte Speicher reserviert. Ein Objekt, wie es dann w ist, wendet die in der Klassendeklaration aufgeführten Methoden auf den Speicherbereich, der hinter w als Zeiger steckt, an.
var
w : TWuerfel; begin w := TWuerfel.Create; w.SetPunkte(2,2,3); Daher ist es wichtig, sowohl die Klasse zu deklarieren als auch den Konstruktor auszuführen, der eine Instanz erzeugt. |
Re: Array Zugriffsverletzung
Delphi-Quellcode:
unit mMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, mWürfel; type TMain = class(TForm) Timer1: TTimer; Button1: TButton; ImProjEbene: TImage; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } Würfel: TWürfel; // Hier erzeuge ich doch ? public { Public-Deklarationen } end; var Main: TMain; implementation {$R *.dfm} procedure TMain.Button1Click(Sender: TObject); begin Würfel.SetPunkte(2,2,4); Würfel.SetPunkte(2,3,3); Label1.Caption:=IntToStr(Würfel.GetPunkte(2,2)) + IntToStr(Würfel.GetPunkte(2,3)); end; end. |
Re: Array Zugriffsverletzung
Delphi-Quellcode:
procedure TMain.Button1Click(Sender: TObject);
begin Würfel := TWürfel.Create; // Das muss noch rein Würfel.SetPunkte(2,2,4); Würfel.SetPunkte(2,3,3); Label1.Caption:=IntToStr(Würfel.GetPunkte(2,2)) + IntToStr(Würfel.GetPunkte(2,3)); Würfel.free; // Das evtl. auch noch end; |
Re: Array Zugriffsverletzung
hat sich erledigt hab wirklich das erzeugen vergessen ..... -.-
sprich mit
Delphi-Quellcode:
vielen dank leute und entschuldigt bitte den unnötigen thread
.....
Würfel:=TWürfel.Create; ..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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