![]() |
Bei Sortierung Komma zeichen ignorieren
Hi ich bin ziemlich neu bei Delphi und habe die Aufgabe bekommen Zahlen zu sortieren diese soll der Anwender mit einem Komma getrennt in ein edit feld schreiben z.B 5, 32, 2, 86 und später in einer Listbox ausgegeben werden. Wie bekomme ich es hin dass das Programm die einzelnen Zahlen erkennt und die Kommas so zu sagen ignoriert?
|
AW: Bei Sortierung Komma zeichen ignorieren
Nur indem man seine eigene Sortierungsfunktion (bzw. Comparer) verwendet. Was soll den sortiert werden? (StringListe?)
|
AW: Bei Sortierung Komma zeichen ignorieren
Kannst du vielleicht einmal darlegen was du schon hast? Bekommst du es hin eine einzelne Zahl in einem Edit-Feld überhaupt zu erkennen? Also z.B. zwei Edit-Felder, in beide muss eine Zahl eingetragen werden und dein Programm sagt welche Zahl größer ist? Bekommst du das hin? Hast du überhaupt Erfahrung in Software-Entwicklung oder fängst du bei absolut Null an?
|
AW: Bei Sortierung Komma zeichen ignorieren
Da du die Delphi-Version nicht angegeben hast, gehe ich mal von der neuesten (Rio 10.3.2) aus.
Delphi-Quellcode:
uses
System.SysUtils, System.Generics.Collections; procedure TForm1.SortButtonClick(Sender: TObject); var input: string; splitted: TArray<string>; strItem: string; numbers: TArray<Integer>; numItem: Integer; begin // Auslesen aus dem Edit input := InputEdit.Text; // Trennen am Komma splitted := input.Split([',']); // Umwandeln in (Ganz-)Zahlen numbers := []; for strItem in splitted do begin numbers := numbers + [Integer.Parse(strItem)]; end; // Sortieren TArray.Sort<Integer>(numbers); // Ausgabe SortedNumberListBox.Items.BeginUpdate(); try SortedNumberListBox.Items.Clear(); for numItem in numbers do SortedNumberListBox.Items.Add(numItem.ToString()); finally SortedNumberListBox.Items.EndUpdate(); end; end; |
AW: Bei Sortierung Komma zeichen ignorieren
@Der schöne Günther "Bekommst du es hin eine einzelne Zahl in einem Edit-Feld überhaupt zu erkennen?" Nein das bekomme ich nicht hin. "Also z.B. zwei Edit-Felder, in beide muss eine Zahl eingetragen werden und dein Programm sagt welche Zahl größer ist?" Das würde ich vlt hinbekommen aber es soll hat nur in einem edit feld stehen."Hast du überhaupt Erfahrung in Software-Entwicklung oder fängst du bei absolut Null an? " Ich kenne mich mit Visual Basic ganz ok aus und arbeite erst seit gestern mit Delphi also kenne ich da wirklich nur absolute Grundlagen.
|
AW: Bei Sortierung Komma zeichen ignorieren
..sollte es nicht auch so funktionieren:
Delphi-Quellcode:
ungetestet
sl := TStringList.create;
sl.delimiter := ','; sl.delimtedText := edit1.Text; sl.sorted := true; Grüße Klaus |
AW: Bei Sortierung Komma zeichen ignorieren
Zitat:
|
AW: Bei Sortierung Komma zeichen ignorieren
Ich würde die Kommata mit dem folgendem Leerzeichen durch einen Zeilenumnruch #13#10 ersetzen, das Ergebnis in eine Stringlist packen und diese mit Bubblesort numerisch sortieren.
|
AW: Bei Sortierung Komma zeichen ignorieren
Mit einem halbwegs aktuellen Delphi kann man auch recht einfach Zahlen in einer Stringlist sortieren:
Delphi-Quellcode:
uses
System.SysUtils, System.Classes; function NumberCompareStrings(List: TStringList; Index1, Index2: Integer): Integer; begin Result := string.Compare(List[Index1], List[Index2], [coDigitAsNumbers]); end; procedure Main; var lst: TStringList; I: Integer; begin lst := TStringList.Create; try lst.CommaText := '5, 32, 2, 86'; lst.CustomSort(NumberCompareStrings); Writeln(lst.CommaText); // => 2,5,32,86 finally lst.Free; end; end; |
AW: Bei Sortierung Komma zeichen ignorieren
Er nun wieder. :mrgreen:
Aber wie und wo bekommt deine Sortierfunktion die Parameter übergeben? |
AW: Bei Sortierung Komma zeichen ignorieren
Zitat:
![]() ![]() |
AW: Bei Sortierung Komma zeichen ignorieren
Zitat:
|
AW: Bei Sortierung Komma zeichen ignorieren
Danke. Aber beide deiner Links werden bei mir nicht gefunden: 404.
|
AW: Bei Sortierung Komma zeichen ignorieren
Tipp mal TStringList.CustomSort in die Delphi Referenz ein...8-)
|
AW: Bei Sortierung Komma zeichen ignorieren
Habe ich dann auch gemacht.
|
AW: Bei Sortierung Komma zeichen ignorieren
Zitat:
|
AW: Bei Sortierung Komma zeichen ignorieren
Hallo Ich bins nochmal,
also ich habe es jetzt hinbekommen dass 4 Zahlen aus einem edit feld in einer listbox angegeben werden aber ich hab den soritierungs fehler das immer nur nach der ersten zahl sortiert wird heißt 24 5 67 9 z.B es soll aber natürlich 5 9 24 67 dort stehen hat jemand eine gute methode für mich das leicht zu lösen? |
AW: Bei Sortierung Komma zeichen ignorieren
Dann zeig doch erst mal wie du das bisher machst.
|
AW: Bei Sortierung Komma zeichen ignorieren
In wie vielen Themen diskutieren wir jetzt das selbe Problem? :roll:
Hier geht's weiter: ![]() Geschlossen. |
Dieses Thema wurde am "11. Sep 2019, 12:20 Uhr" von "Luckie" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Object-Pascal / Delphi-Language" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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