AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array sortieren

Ein Thema von michael.cohrs · begonnen am 25. Jul 2017 · letzter Beitrag vom 25. Jul 2017
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Array sortieren

  Alt 25. Jul 2017, 09:42
Wenn mich nicht alles täuscht müsste es so funktionieren:

if ArrAngKps[j].CrtDatum > ArrAngKps[j + 1].CrtDatum then // if ArrAngKps[J].CrtDatum statt if ArrAngKps[I].CrtDatum
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#2

AW: Array sortieren

  Alt 25. Jul 2017, 09:46
Joar, erstmal die falsche Variable, was dem ersten Punkt entspricht.
Zitat:
* das Sortieren des Arrays (das Tauschen/Verschieben der Items)

Und dann noch der zweite Punkt. (wenn Punkt 1 dann erstmal mit einem Kriterium funktioniert, den Vergleich entsprechend erweitern)
Zitat:
* das Vergleichen zweier Items?
** Hier zuerst das Hauptkriterium (Datum) vergleichen und "nur" wenn das gleich ist, dann jeweils das nächste Kriterium (Kunde, Nummer, ...) vergleichen, und sozusagen jeweils den ersten Unterschied zum Sortieren verwenden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jul 2017 um 09:49 Uhr)
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#3

AW: Array sortieren

  Alt 25. Jul 2017, 09:48
das habe ich in dem ersten Beispiel versucht ( if ArrAngKps[j].CrtDatum > ArrAngKps[j + 1].CrtDatum then)
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#4

AW: Array sortieren

  Alt 25. Jul 2017, 09:56
In Projektoptionen bitte mal Indexprüfung aktivieren.
Zitat:
Delphi-Quellcode:
for i := low(ArrAngKps) to Pred(high(ArrAngKps)) do
  for j := succ(i) to high(ArrAngKps) do
    if ArrAngKps[j].CrtDatum > ArrAngKps[j + 1].CrtDatum then
j := ... to high(ArrAngKps) und ArrAngKps[j + 1] muß zwangsläufig knallen.
High+1 ist nicht mehr im Array drin.


Außerdem vergleichst du dort J mit J+1, aber tauschst I mit J.
Und im zweiten Versuch verlgichst du I mit J, aber tauschst J mit J+1.
Man sollte da natürlich nur das tauschen, was vorher auch verglichen wurde, da sonst das Vergleichsergebnis nicht unbedingt zu den getauschten Items passt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jul 2017 um 10:13 Uhr)
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#5

AW: Array sortieren

  Alt 25. Jul 2017, 10:18
Ich versteh nichts mehr.....könnte mir bitte jemand für das Beispiel einen funktionierenden CodeSnipsel senden?

Michael Cohrs
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Array sortieren

  Alt 25. Jul 2017, 11:03
Delphi-Quellcode:
  for i := low(ArrAngKps) to Pred(high(ArrAngKps)) do
    for j := succ(i) to high(ArrAngKps) do
      if ArrAngKps[j].CrtDatum > ArrAngKps[j + 1].CrtDatum // wenn j = high(ArrAngKps) ist, gibt es j + 1 nicht.
      then
      Begin
        TmpAng := ArrAngKps[i];
        ArrAngKps[i] := ArrAngKps[j];
        ArrAngKps[j] := TmpAng;
      end;

  for i := 0 to length(ArrAngKps) - 1 do
  Begin
    for j := 0 to length(ArrAngKps) - 2 do
    begin
      if ArrAngKps[i].CrtDatum > ArrAngKps[j + 1].CrtDatum then
      Begin
        // Warum j und j + 1 tauschen, wenn i und j + 1 verglichen wurden?
        TmpAng := ArrAngKps[j];
        ArrAngKps[j] := ArrAngKps[j + 1];
        ArrAngKps[j + 1] := TmpAng;
      end;
    end;
  end;

Geändert von nahpets (25. Jul 2017 um 16:52 Uhr) Grund: Schreibfehler behoben
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Array sortieren

  Alt 25. Jul 2017, 14:04
Ich versteh nichts mehr.....könnte mir bitte jemand für das Beispiel einen funktionierenden CodeSnipsel senden?
Hm, bin ich jetzt blind? Was ist mit dem Beispiel von Uwe?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Array sortieren

  Alt 25. Jul 2017, 14:07
Ich versteh nichts mehr.....könnte mir bitte jemand für das Beispiel einen funktionierenden CodeSnipsel senden?
Hm, bin ich jetzt blind? Was ist mit dem Beispiel von Uwe?
Er benutzt Delphi 6. Da funktioniert das Beispiel von Uwe nicht. Stichwort Generics und bspw. TArray.

Er könnte das evtl. auf sich anpassen, aber da habe ich zu wenig Ahnung von Delphi 6 was damit möglich ist.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Array sortieren

  Alt 25. Jul 2017, 14:13
Ah da "ich muss leider Delphi 6 nutzen". Dann ist das Beispiel von Uwe unbrauchbar. Das anpassen ist extrem schwierig meine ich.
Mehr Kommentare verkneif ich mir jetzt, sonst bekomme ich wieder eines aufs Dach.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz