Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [Erledigt]Problem mit Sortier-Algorithmus (https://www.delphipraxis.net/194100-%5Berledigt%5Dproblem-mit-sortier-algorithmus.html)

G4schi 17. Okt 2017 11:02


[Erledigt]Problem mit Sortier-Algorithmus
 
Hallo, folgenden Code habe ich
Delphi-Quellcode:
procedure THauptfenster.sg_sortieren(sortierfeld:String);
var array_min,array_hilfe:TAngaben;
    i,merken,j:Integer;
begin
     if sortierfeld = 'Niederschlag' then
     begin
          for i:=0 to Length(aDaten)-1 do
          begin
              array_min := aDaten[i];
              merken:=i;

              for j:=i+1 to Length(aDaten)-1 do
              begin
                if aDaten[j].niederschlag < array_min.niederschlag then
                begin
                    array_min := aDaten[j];
                    merken:=j;
                end;
              end;
          end;
          array_hilfe := aDaten[merken];
          aDaten[merken] := aDaten[i];
          aDaten[i] := array_hilfe;
     end;
end;

Ablauf:
Daten sollen aus einem Array of Records in einen StringGrid übertragen werden. Das läuft auch alles, aber jetzt
möchte ich die Daten sortieren.
Wenn der Parameter 'Niederschlag' übergeben wird,an diese Procedure, soll das Array of Record nach .niederschlag sortiert werden.
Das Array hat 3 Elemente. Wenn j = 3, wird ein seltsamer Wert, lange Fließkommazahl, an aDaten[j].niederschlag übergeben.
Dieser Wert wird dann in mein StringGrid, beim letzten Eintrag, übergeben. Ich verstehe nicht wieso noch ein Wert übergeben wird.
Eigentlich sollte doch, wenn j=3, Schluss sein.
Kann mir einer sagen, warum das passiert? Liegt der Fehler nicht in dieser Procedure?

DeddyH 17. Okt 2017 11:29

AW: Problem mit Sortier-Algorithmus
 
Ich steige da nicht ganz durch. Wieso wird nur ein einziges Mal getauscht?

himitsu 17. Okt 2017 11:58

AW: Problem mit Sortier-Algorithmus
 
Ich denke mal die letzten drei Tauschzeilen sind verrutscht und gehören eine Ebene tiefer. (ein END nach oben)

Aber natürlich ist hier der Entwickler Schuld, dass er das nicht selber bemerkte, da er sämtliche Compilerwarnungen ignoriert hat.
> i und merken sind da unten nicht initialisiert :zwinker:

G4schi 17. Okt 2017 12:01

AW: Problem mit Sortier-Algorithmus
 
Oh mein Gott!!!

So blind -.-

Danke, habe das total ausser acht gelassen.


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