![]() |
Dyn. Array führt zu Absturz
Nabend,
ich arbeite gerade an einem kleinen Sortierungsprogramm und wie Sortierungen das so an sich haben, brauch ich dafür ein Array. Daher hab ich mir also ein dyn. Array aufgzogen feld: array of integer; in diesem array werden zahlen gespeichert die hinter sortiert werden sollen. und dieses array macht zicken sobald man das programm beenden will. sobald man das array mit irgendwelchen zahlen befüllt, ist ein fehler am programmende vorprogramiert. dass soll so viel heissen, dass ich dass array zur laufzeit mit so vielen zahlen von oben bis unten zu pumpen kann und auch ganz normal damit hantieren kann, nur zu dem zeitpunkt wo ich das programm beende kommt halt ein fehler. Delphi stellt eine "exception der klasse EInvalidPointer" fest, ich bekomm dann noch zwei weiter Messagen die mir auch nochmal sagen das eine ungültige zeigeroperation festgestellt wurde und das programm stürzt, obwohl es ja eigentlich schon beendet wurden. dass hat zwar zur laufzeit absolut keinen effekt, es sieht aber einfach nur verdammt scheisse aus wenn man so nen dicken fehler bekommt wenn man das programm gerade beendet. für den fall das ich mein programm aber starte und das array aber nicht befülle und irgendwelche anderen sachen teste, bekomm ich keinen abbruch, erst zu dem zeitpunkt wo das array einmal befüllt wurde. daher meine frage, was muss ich machen damit mir dieser fehler nicht mehr passiert?! ;) |
Re: Dyn. Array führt zu Absturz
Du musst das Array korrekt dimensionieren. Und damit du hinterher auch nicht auf verbotenen Pfaden wandelst mache es so:
Delphi-Quellcode:
Grüße vom marabu
var
feld: array of Integer; i: Integer; begin SetLength(feld, 20); for i := Low(feld) to High(feld) do feld[i] := Random(1000); end; |
Re: Dyn. Array führt zu Absturz
Hast du das Aray mit Finalize aufgeräumt?
Ansonsten, greifst du beim beenden auf einen Wert ausserhalb der Definition zu? Wenn du mit setlength einen Wert von 5 festlegst, ist der Zugriffsbereich ja shcließlich zwischen 0 und 4 definiert ... bei Schleifen macht man da gerne Fehler. mfG Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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