![]() |
Liste Sortieren - Gleiche Liste wie bei den anderen Themen
Hallo,
und nochmal eine Frage, wie sortiere ich so eine Liste? Ich will die Liste nach Besitzer sortieren.
Delphi-Quellcode:
So zeige ich mir zum Beispiel einen Index an, nur damit ihr wisst um was für eine Liste es sich handelt.
procedure TForm1.cmdIndexClick(Sender: TObject);
var pAuto: IAuto; index: Integer; begin index := 0; index := StrToInt(edIndex.Text); pAuto := AutoList.Items[index]; edBesitzer.Text := pAuto.ErgebnisName; edKW.Text := FloatToStr(pAuto.ErgebnisKW); edPS.Text := FloatToStr(pAuto.ErgebnisPS); Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Schaun dir mal Tlist.Sort an
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
es ist keine ListBox.
Delphi-Quellcode:
Das ist meine Liste.
TAutoList = class(TInterfacedobject, IAutoList)
private FList: IInterfaceList; protected procedure add(const AValue: IAuto); procedure clear; function count: Integer; function get_Items(const AIndex: Integer): IAuto; property Items[const AIndex: Integer]: IAuto read get_Items; default; public constructor Create; end; Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Du solltest vielleicht erstmal sagen worin du die Besitzer anzeigst und darin kannst du die dann sortieren.
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
ich zeige immer nur einen Wert in einem TextFeld an. Das sortieren soll nur in der Liste passieren, auch wenn man es nicht sieht. Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
AutoList.Items[] müsset doch eine T(String)List sein?
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
nein AIndex: Integer; Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Zitat:
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
ja sorry. Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
In dem Fall einfach mal "TStringList" im Editor eingeben, Cursor drauf und F1 drücken. Da sollte dir eine bestimme Methode sofort ins Auge stechen.
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
ist das denn das was ihr meint?
Delphi-Quellcode:
Das ist nämlich meine Liste.
FList: IInterfaceList;
Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
ich habe jetzt eine weitere Information erhalten. Ich soll das Sortieren mit 2 Schleifen machen. Schauen ob etwas größer oder kleiner ist und dann ggf. tauschen. Kann sich jemand darunter etwas vorstellen? Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Mal so am Rande: Warum um Himmelswillen bastelst du dir eine Liste aus Interfaces zusammen? Mit einer TStringList oder einer eigenen Ableitung von TList wärst du so viel einfacher dran, und hättest die Sortierung einfach frei Haus schon eingebaut (bei TStringList zumindest, bei TList muss man aber auch nur noch eine Vergleichsmethode basteln).
Gibt's irgendetwas speziells was du tust weswegen du über die Interfaces gehts, oder war das "ich kopier mal diesen Code, verstehe ihn nicht, aber immerhin hab ich was, was in etwa so klingt als wär's toll"? Im letzteren Fall: Sowas kommt von sowas. |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
nein das ist eien Aufgabe die ich bekommen habe. Aber ich komme nicht weiter. PS: Ich finde es ne Frechheit sowas zu unterstellen! Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
.. stell doch mal Deine Aufgabe hier hinein (als pdf)
dann kann man ja schauen ob Du unbedingt mit Interfaces arbeiten musst. Grüße Klaus |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Zitat:
Da solche Fälle allerdings hier nicht unbedingt so selten sind wie man es sich wünschen würde und vom Verlauf her diesem Thread hier nicht unähnlich wirken, war der Gedanke zumindest nicht unbegründet. Tut mir leid wenn es hier nun den falschen erwischt hat - nix für ungut. Der genaue Wortlaut der Aufgabenstellung dürfte hier in der Tat erheblichen Aufschluss geben, weil zumindest ich kann im Moment nicht so ganz erkennen worin das ganze am Ende mal münden soll. |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
mmh... Das Sortierverfahren das du brauchst klingt ganz stark nach Bubblesort.. :mrgreen:
|
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
nein die Aufgabe habe ich mündlich erhalten, dass ich mit Interfaces arbeiten soll. Zitat:
Also ich befinde mich in einer Ausbildung und aus diesem Grund will ich auch nicht nur Text kopieren, ich will etwas lernen. Zitat:
Gruß, Schnittcher |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Hallo,
Delphi-Quellcode:
Also hier wäre erst mal das aCount und das Array-Propertyproperty Count: Integer property Items[const AIndex: Integer]: IAuto also jetzt mal den BubbleSort so hingeschludert.
Delphi-Quellcode:
Das XXX ist irgendein ein Vergleichskriterium.
var
i. j: Integer; Auto_i: IAuto; Auto_j: IAuto; Auto_Temp: IAuto; for i:= 0 to Count-1 do begin for j:= i+1 To Count-1 do begin Auto_i:= Items[i]; Auto_j:= Items[j]; if Auto_j.XXX<Auto_i.XXX then begin Auto_Temp:= Auto_i; Auto_i:= Auto_j; Auto_j:= Auto_Temp; end; end; end; Aber auch mir ist schleierhaft, was das soll ? weder zum Sort-Üben noch zum Interface-Üben geeignet, weil 2 Sachen gemischt werden #Update# Es muss natürlich das < sein Auto_j.XXX<Auto_i.XXX Heiko |
Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
Okay, du hast vermutlich noch nie zuvor eine Sortierung gebaut. Daher mal kleinschrittig:
Wie definiert man "sortiert"? Sortiert ist etwas, wenn Elemente einer Menge entsprechend ihrer ordinalen Rangfolge angeordnet sind. Das heisst für natürliche Zahlen z.B. dass eine 5 immer vor einer 8 stehen muss, eine 12 aber hinter der 8. Das heisst, das aller erste was du brauchst ist ein Weg den Besitzernamen eine Rangfolge zuzuordnen. Da es sich hier um Text handelt macht eine alphabetische Ordnung wohl am meisten Sinn, so dass A vor B steht - man sagt dann A kleiner B. Was muss man tun, um zwei Elemente zu sortieren? Simpel: Vergleiche die beiden, und tausche sie gegeneinander aus wenn das erste größer dem zweiten ist. (Für aufsteigende Sortierung. Für absteigend genau anders herum.) (Wenn du das für jedes Element einer Liste und seinem Nachfolger machst, so lange bis nichts mehr vertauscht wurde, ist das schon Bubblesort.) Nun bleibt noch die Frage: Wie kann ich in Delphi definieren dass ein Buchstabe kleiner oder größer als ein anderer ist? Das ist ebenfalls sehr einfach, da in so ziemlich allen Zeichentabellen - allen voran die ASCII Tabelle - dem A ein kleinerer Zahlwert zugeordnet ist als dem B. Um nun in Delphi zu fragen ob Zeichen1 kleiner Zeichen2 genügt:
Delphi-Quellcode:
Das ganze würde jetzt erst nur einen Buchstaben betrachten. Für ganze Zeichenketten könnte sowas so aussehen:
var
Z1KleinerZ2: Boolean; Z1, Z2: Char; begin Z1 := 'A'; Z2 := 'B'; Z1KleinerZ2 := Ord(Z1) < Ord(Z2); end;
Delphi-Quellcode:
Du schiebst also "i" solange nach "hinten" in deinen Strings, bis ein unterschiedliches Zeichen auftaucht und vergleichst dann diese. Der Codefetzen hier knallt übrigens noch, wenn die beiden Strings unterschiedliche lang sind, und einer der beiden gleich dem anderen ist, nur um Zeichen gekürzt. Das müsstest du dann noch separat behandeln.
var
S1kleinerS2: Boolean; S1, S2: String; i: Integer; begin S1 := 'Andreas'; S2 := 'Aaron'; i := 1; while (S1[i]=S2[i]) inc(i); S1kleinerS2 := S1[i] < S2[i]; end; Und das sollte schon an Infos ausreichen um zumindest ein einfaches Bubblesort auf Stringbasis zu basteln. Wenn nicht, sag uns doch bitte wo genau dann noch das Problem liegt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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