Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Quicksort: Zugriffsverletzung bei Adresse x in Modul 'xy.exe'. Lesen von Adresse z. (https://www.delphipraxis.net/180055-quicksort-zugriffsverletzung-bei-adresse-x-modul-xy-exe-lesen-von-adresse-z.html)

Katehe 19. Apr 2014 09:24

Quicksort: Zugriffsverletzung bei Adresse x in Modul 'xy.exe'. Lesen von Adresse z.
 
Hallo :)
Ich versuche jetzt seit zwei Tagen schon ein ganz einfaches Quicksort- Programm zu schreiben, kriege es aber irgendwie nicht auf die Reihe. Jetzt sagt es mir schon ziemlich lange "Zugriffsverletzung bei Adresse xxx in Modul 'xyz.exe'. Lesen von Adresse yyy." und ich finde den Fehler einfach nicht. Ich weiß wo er in etwa ist, allerdings nicht was falsch ist. Denkfehler wahrscheinlich. :roll: Bitte um Hilfe!!
Hier der Teil der nicht klappt:

procedure zerlege (var zahl:array of integer; u, o: integer);
var p,x: integer;
begin
p := zahl[(u+o) DIV 2];
repeat
while zahl[l] < p do
l := l + 1;

while zahl[r] > p do
r := r - 1;


if zahl[l]>zahl[r] then begin
x:=zahl[l];
zahl[l]:=zahl[r];
zahl[r]:=x;
l:=l+1; r:=r-1;
end;
until l=r;
end;

Also bei dem Dickgedruckten müsste der Fehler sein glaube ich.

Sir Rufo 19. Apr 2014 09:38

AW: Quicksort: Zugriffsverletzung bei Adresse x in Modul 'xy.exe'. Lesen von Adresse
 
Herzlich Willkommen in der DP!

Bei deinem Code fällt mir folgendes auf:
  • Die Variablen
    Delphi-Quellcode:
    l
    und
    Delphi-Quellcode:
    r
    sind keine lokalen Variablen und können irgendwelche Werte beinhalten
  • Diese Variablen werden in der Prozedur vor dem Benutzen nicht initialisiert und somit ist nicht klar, wohin du in dem Array greifst
  • Die Parameter
    Delphi-Quellcode:
    u
    und
    Delphi-Quellcode:
    o
    sind eigentlich überflüssig, denn diese Werte bekommst du mit
    Delphi-Quellcode:
    Low( zahl )
    und
    Delphi-Quellcode:
    High( zahl )
  • Der Parameter
    Delphi-Quellcode:
    zahl
    ist nicht wirklich sprechend und sollte z.B. in
    Delphi-Quellcode:
    ZahlArray
    umbenannt werden

PS

Wenn du Delphi-Code hier postest, dann schliesse den Code in
Code:
[DELPHI]
// hier Delphi Code
// in hübsch
[/DELPHI]
ein, dann wird der auch hübsch formatiert
Delphi-Quellcode:
// hier Delphi Code
// in hübsch

Katehe 19. Apr 2014 09:59

AW: Quicksort: Zugriffsverletzung bei Adresse x in Modul 'xy.exe'. Lesen von Adresse
 
:wall:
:wall:
:wall:
:wall:
:wall:
:wall: .

Mann darauf hätte ich auch selber kommen können :roll:
Vielen Dank! Jetzt funktioniert es auch :D


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