Zitat von
qwertz543221:
Zitat:
if hsh>length(wb)
then setlength(wb,hsh+1);
müsste ich das voranstellen, vermutete ich mal; - doch das hat auch keine wirkung
Hast Du eigentlich irgendeinen Plan? Oder 'ne Ahnung, was das bedeuten würde? (Siehe Punkt 2 unten).
So langsam fühle ich mich verarscht! Das ist doch fast wieder der gleiche Unsinnscode wie aus Deinem ersten Beitrag. Was hast Du uns denn in der Zwischenzeit gezeigt?
Und selbstverständlich erhalte ich einen Rangecheckfehler beim Aufruf von quicksort(1,length(wb)) in Zeile 113.
Wie in meinem ersten Beitrag leider richtig vermutet, scheint auch dieser Thread im Desaster zu enden. Und ehe ich mich darauf einlasse, hier noch mindestens vier Fehler, und das war's dann wahrscheinlich für mich:
1. Wie schon gesagt, das ELF-Hash ist 31-Bit-Vorzeichen behaftet, also benutzt Du Indizes von -2147483648 bis 2147483647, was geradezu um eine Accessviolation bettelt.
2. Binsearch liefert -1 falls nicht gefunden, Du vermutest wohl allerdings weiter unten das Binsearch=0 nicht gefunden bedeutet. Die nächste Katastrophe ist also vorprogrammiert. Leider scheinst Du immer noch nicht zu begreifen, daß es sich lohnt Parameter und Rückgabewerte von Funktionen (kurz) zu dokumentieren.
3. In Quicksort steht immer noch der Schrott
wb[j]:=wb[i];
wb[i]:=b;
nach der while Schleife.
4. Der Rangecheck-Fehler: Quicksort sortiert von wb[l] bis wb[r], bei Deinem Aufruf von wb[1] bis wb[length(wb)]. Bumm! Richtig wäre quicksort(Low(wb),High(wb)) oder gerade noch akzeptabel quicksort(0,length(wb)-1);
Gammatester