![]() |
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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