Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehlermeldung bei nem Array (https://www.delphipraxis.net/9136-fehlermeldung-bei-nem-array.html)

speedy 19. Sep 2003 00:46


Fehlermeldung bei nem Array
 
Hi,

ich programmier grade an nem Mathe Trainingsprogramm und bekomm immer ne Fehlermeldung wenn ich ein Array festlege. Aber warum hab ich bis jetzt noch nicht rausgefunden...

und zwar:

Code:
 setlength(rz1,2);
  rz1[1] := 1; rz1[2] := 2;
 setlength(rz2,2);
  rz2[1] := 1; rz2[3] := 3;
 setlength(rz3,2);
  rz3[2] := 2; rz3[3] := 3;
 setlength(rz4,3);
  rz4[1] := 1; rz4[2] := 2; rz4[3] := 3;   {<--------- PROBLEM}
rz4 ist hierbei "array of integer".

das ganze soll anschließend mit
Code:
rechen3 := randomfrom(rz4);
weiterverarbeitet werden.

und die fehlermeldung ist
Zitat:

In Projekt c:\text.exe trat ein problem mit folgender meldung auf: 'zugriffsverletzung bei 0x00405a51: schreiben von adresse 0x00030cd4'. prozess angehalten. mit einzelne anweisung oder start fortsetzen.

hat jemand ne idee wo der fehler liegen könnte? die anderen 'setlength' anweisungen schluckt er auf jeden fall einwandfrei.


vielen dank!

gruß
speedy

anku 19. Sep 2003 01:59

Re: Fehlermeldung bei nem Array
 
Du musst immer von null an zählen. Ein dynamisches Array beginnt immer mit dem index 0. wenn dein array eine "länge" von 2 hat, dann zählt der index von 0 bis 1, also array[0] und array[1]. array[2] führt zu einem fehler. schalte am besten untern den compiler options die bereichsüberprüfung ein. projekt->options->reiter compiler, haken bei bereichsprüfung setzen.

mfg

speedy 19. Sep 2003 07:33

Re: Fehlermeldung bei nem Array
 
hmm... ich hatte mal kurzzeitig bei der fehlersuche den index von rz4 so:
Code:
setlength(rz4,3);
  rz4[0] := 1; rz4[1] := 2; rz4[2] := 3;
das programm ist aber leider trotzdem an der stelle ausgestiegen... :?

gruß
speedy

neolithos 19. Sep 2003 08:49

Re: Fehlermeldung bei nem Array
 
Delphi-Quellcode:
 setlength(rz1,2);
  rz1[1] := 1; rz1[2] := 2; // <-- du zerstören Speicher
 setlength(rz2,2);
  rz2[1] := 1; rz2[3] := 3; // <-- du zerstören Speicher
 setlength(rz3,2);
  rz3[2] := 2; rz3[3] := 3; // <-- du zerstören Speicher
 setlength(rz4,3);
  rz4[1] := 1; rz4[2] := 2; rz4[3] := 3; // <-- du zerstören Speicher
Delphi-Quellcode:
 setlength(rz1,2);
  rz1[0] := 1; rz1[1] := 2;
  setlength(rz2,2);
  rz2[0] := 1; rz2[1] := 3;
 setlength(rz3,2);
  rz3[0] := 2; rz3[1] := 3;
 setlength(rz4,3);
  rz4[0] := 1; rz4[1] := 2; rz4[2] := 3;

Blechwolf 19. Sep 2003 09:22

Re: Fehlermeldung bei nem Array
 
Salut,

wie Neo schon gesagt hat, liegt der Fehler vermutlich schon bei den Zuweisungen vorher, die auf vollkommen undefinierte Speicherbereiche zugreifen.
Das sich das erst bei der Belegung von rz4 äussert, hat nicht viel zu sagen.
Grüße

Blechwolf


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 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