Einzelnen Beitrag anzeigen

Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#1

Arrayzugriff nimmt irgendwelche Wahllos-Variableninhalte aus Speicher

  Alt 20. Apr 2015, 07:28
Guten Morgäään, (oh, man ... die halbe Nacht steppe ich nun schon durch diese paar lächerlichen Zeilen dämlichen Code - *rote Augen reib*)

derzeit weiß ich nicht, wie ich das besser beschreiben soll (müde).
Ich möchte mit dem SelectionSort Algorithmus mein Array sortieren.
Dazu hab ich mir eine zweite "Indexvariable" implemetiert:
SortListNumber.
Nur diese wird verändert - nicht die ganzen Felderinhalte verschoben.

so in ner andern Funktion ist Form1.DynARray[J].SortListNumber fortlaufend, incrementiert (Felder 0 bis 9 sind belegt mit "int" 0 bis 9 )

Doch aus irgendwelchen Gründen tauchen nachher, wenn ich später mal
for i := 0 to Form1.MyItemMax - 1 do
durch gehe sind manche Zahlen in SortListnumber (immer wieder, reproduzierbar ) 3575 statt 9 oder 24145 statt 4, ...
Bsp: 8,5, 7, 3575 , 3, 24145,2 ,0 , 1 , 6.
wenn ich die Schleife nochmaldurchgehe werden auch die anderen Ziffern nacheinander durch 24145 ersetzt....

d.h. der holt die wohl irgendwo aus dem Speicher.
Aber wo???



Form1.DynARray[i].MyItem;
Delphi-Quellcode:
procedure TDateienFORM.SORTButtonClick(Sender: TObject);
Var
k, tmp, HHH, maxi, i, j, : Integer;
begin

maxi := Form1.MyItemMax; // verwendete/belegte Felder vom DynArray [0..1000]


for i := 0 to maxi - 1 do
begin
   hhh := Form1.DynARray[i].MyItem; // MyItem => zu vergeleichendes Feld
   k := i;
                                                                       
   for j := i+ 1 to maxi - 1 do begin // +1

      if Form1.DynARray[J].MyItem < hhh then
      begin
         k := j;
         hhh := Form1.DynARray[J].SortListNumber;
      end;

   end;
   Form1.DynARray[k].SortListNumber := Form1.DynARray[i].SortListNumber;
   Form1.DynARray[i].SortListNumber := hhh;
end;
end;
die Algorithmus-Variablennamen (TMP, hhh, , k) sind leicht abgewandelt von dem Algorithmus, den ich irgendwann mal im Web gefunden jab. Quelle unbkeannt. Aber er müßte mit dem auf Wikipedia gefundenen Pseudocode identisch sein.
https://de.wikipedia.org/wiki/Selectionsort (bin das vergleichend durchgegangen)

Sieht jemand meinen Denkfehler?
Danke - entschuldigt bitte meine Problem-Beschreibung. Bin noch Delphi-newbie.
Jan
  Mit Zitat antworten Zitat