AGB  ·  Datenschutz  ·  Impressum  







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

Klasse funktioniert nicht

Ein Thema von fidibus · begonnen am 4. Jun 2007 · letzter Beitrag vom 4. Jun 2007
Antwort Antwort
Benutzerbild von fidibus
fidibus

Registriert seit: 22. Apr 2007
9 Beiträge
 
Delphi 2005 Personal
 
#1

Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:23
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:
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
Danke für Eure Hilfe,
der fidibus
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:25
Zitat von fidibus:
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?

Panel[1].Pixel[i,k,l] := 0; //hier tritt der Fehler auf
Hi,
kontrollier mal den Wert von i, k und l, ob die alle gültig sind!
  Mit Zitat antworten Zitat
Benutzerbild von fidibus
fidibus

Registriert seit: 22. Apr 2007
9 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:29
Hmmm,

ich denke schon...

Delphi-Quellcode:
  

...

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;

...
Gruß, der fidibus
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
124 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:33
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
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:35
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]
  Mit Zitat antworten Zitat
Benutzerbild von fidibus
fidibus

Registriert seit: 22. Apr 2007
9 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Klasse funktioniert nicht

  Alt 4. Jun 2007, 15:39
Hallo,

danke, das war es natürlich, es sind die kleine Dinge, die einem das Leben schwer machen.

Ich werde mal den User reseten müssen.

Der fidibus
  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 13:26 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