Einzelnen Beitrag anzeigen

Benutzerbild von JanWe
JanWe

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

AW: Arrayzugriff nimmt irgendwelche Wahllos-Variableninhalte aus Speicher

  Alt 22. Apr 2015, 15:09
Zuerst könnte man ja mal auf die saudumme Idee kommen und in den Projektoptionen die Indexprüfung aktivieren.
Grüß Dich himitsu,

mhh, ja, kannste nicht wissen .. ich hab nur Delphi 5
da is das wohl noch nich vorgesehn (s. Screenshot).

Hab jetzt einfach nochmal ein wenig durchgesteppt (obwohl .. bei 100x F7 wirste auch langsam ... )
naja
und jedenfalls mal n-1 gesetzt - (ob das jetzt algorithmisch sinnvoll/richtig ist, weiß ich nicht.)
Aber wenigstens verschwindet nicht mehr die 9 und die Null taucht nur 1x auf.

Delphi-Quellcode:
procedure SelectionSort( A : Integer );
var
  n, i, links, min : Integer;
 temp : Integer;
begin
  n := 10 ; // anzahl der Kriterien
  links := 0 ;
  while links < n do
  begin
    min := links;
    for i := links + 1 to n [b]-1[/b] do
    begin
      if Form1.DynARray[ i ].Kriterium < Form1.DynARray[ min ].Kriterium then
        min := i;
    end;

    if links <> min then
    begin
      temp := Form1.DynARray[ links ].SortListNumber;
      Form1.DynARray[ links ].SortListNumber := Form1.DynARray[ min ].SortListNumber;
      Form1.DynARray[ min ].SortListNumber := temp;
    end;

    links := links + 1;
  end;
end;
Allerdings find ich nicht, daß die Vergleiche sinnvoll stattgefunden haben....

SortierListNR (neu sortiert); TAB OriginalPosition ; TAB Kriterium
3 0 80171
0 1 63091
1 2 487258
2 3 3735
7 4 24149
4 5 24149
5 6 24149
6 7 5863
9 8 242816
8 9 24039

denn sortiert is da irgendwie nix:
SortierListNR; TAB OriginalPosition (neue Pos) ; TAB Kriterium (neue Pos)
0 1 63091
1 2 487258
2 3 3735
3 0 80171
4 5 24149
5 6 24149
6 7 5863
7 4 24149
8 8 242816
9 9 24039


wenn ich das hiermit ausgebe.
Delphi-Quellcode:
for i := 0 to 9 do
begin
a := form1.DynARray[i].SortListNumber;
memo3.lines[a] :=(
inttostr(form1.DynARray[i].SortListNumber) + #9 +
inttostr(form1.DynARray[i].Originalnummer) + #9 +
inttostr(form1.DynARray[i].Kriterium) + #9 + ''
);
Miniaturansicht angehängter Grafiken
2015-04-22_143106.png  
Jan

Geändert von JanWe (22. Apr 2015 um 15:16 Uhr)
  Mit Zitat antworten Zitat