![]() |
Klasse funktioniert nicht
Hallo Alle,
ich versuche gerade, etwas mit einer Klassendeklaration zu programmieren. Leider funktioniert es nicht, wenn ich auf die von mir erstellte Klasse zugreifen will. Jedes mal, beim Zugriff kommt eine Exception "Zugriffverletzung bei Adresse... . Fehler beim Schreiben auf Speicher." Was mache ich denn da falsch?
Delphi-Quellcode:
Danke für Eure Hilfe,
type
Feld = class public Pixel : Array of Array of Array of Integer; PixDef : Array of Array of Integer; procedure init(); end; ... private { Private-Deklarationen } Panel : Array [1..2] of Feld; ... procedure Feld.init(); begin SetLength(Pixel,20,20,2); SetLength(PixDef,400,4); end; ... for i := 1 to 2 do begin Panel[i] := Feld.Create; Panel[i].init; cpx[i] := 1; cpy[i] := 1; end; ... Panel[1].Pixel[i,k,l] := 0; //hier tritt der Fehler auf der fidibus |
Re: Klasse funktioniert nicht
Zitat:
kontrollier mal den Wert von i, k und l, ob die alle gültig sind! |
Re: Klasse funktioniert nicht
Hmmm,
ich denke schon...
Delphi-Quellcode:
Gruß, der fidibus... for i := 1 to 20 do begin for k := 1 to 20 do begin for l := 1 to 2 do begin Panel[1].Pixel[i,k,l] := 0; end; end; end; ... |
Re: Klasse funktioniert nicht
Die Indizes für I, K und L beginnen nicht bei 1 sondern bei 0 unden enden entsprechend auch einen Wert früher.
Gruß Daddy |
Re: Klasse funktioniert nicht
Ja, hier liegt Dein Fehler.
Dynamische Arrays sind immer 0-indexiert. Das erste Element steht immer am Index 0 (bei Strings sieht das anders aus, da ist es die 1). Entsprechend musst Du hier in einer Schleife von 0 bis Length(array) - 1 laufen. Bei statischen Arrays (solche wo die Länge feststeht) kannst Du wiederum den Startindex angeben (bei Dir 1..2). Das es hier diese Unterscheidung gibt und insbesondere, das Strings eben immer 1-indexiert, dynamische Arrays hingegen immer 0 indexiert sind ist halt eine (dumme) Delphi-Besonderheit. Musst Du einfach so im Hinterkopf behalten. Wenn Du also die Schleifen entsprechend anpasst, sollte das Problem gelöst sein. Gruß Der Unwissende [edit] kein roter kasten! [/edit] |
Re: Klasse funktioniert nicht
Hallo,
danke, das war es natürlich, es sind die kleine Dinge, die einem das Leben schwer machen. :wall: Ich werde mal den User reseten müssen. Der fidibus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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