AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zahlen Soritieren nach größe

Ein Thema von DelphiDustin · begonnen am 11. Sep 2019 · letzter Beitrag vom 11. Sep 2019
Antwort Antwort
Seite 1 von 2  1 2   
DelphiDustin

Registriert seit: 10. Sep 2019
14 Beiträge
 
#1

Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 09:15
Hallo Leute,

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. Mir ist bewusst das es daran liegt das es als string und nicht als int formatiert ist. Ich suche nach einer leichten möglichkeit das, nachdem ich es zu einer int formatiert habe, es nach größe zu sortieren. Hat jemand eine gute und leicht zu verstehende methode für mich das zu lösen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.976 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 09:23
Nenn doch bitte deine Delphi-Version und zeig uns deinen Code.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DelphiDustin

Registriert seit: 10. Sep 2019
14 Beiträge
 
#3

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 09:31
procedure TForm4.Button1Click(Sender: TObject);
var
z1, z2, z3, z4:string;
Stringlist : TStringlist;
begin
listbox1.Clear;
z1:=edit1.text;
z2:=edit1.text;
z3:=edit1.text;
z4:=edit1.text;
Stringlist := TStringList.create;
stringlist.Delimiter:=',';
stringlist.DelimitedText:=edit1.Text;
stringlist.Sorted:=true;
Stringlist.Sort;
listbox1.Items.Add(Stringlist[0]);
listbox1.Items.Add(Stringlist[1]);
listbox1.Items.Add(Stringlist[2]);
listbox1.Items.Add(Stringlist[3]);
end;
end.

Ich benutze Delphi 10.2
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286
Online

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.390 Beiträge
 
Delphi 7 Personal
 
#4

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 09:37
Wahrscheinlich hast Du es übersehen:
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;
Ich geh mal davon aus, daß Schokohase weiß was erschreibt.

Gruß
K-H

P.S. das "Helm-Icon" st wirklich hilfreich um den Sourcecode leserlich zu posten.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DelphiDustin

Registriert seit: 10. Sep 2019
14 Beiträge
 
#5

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 09:58
Zitat:
Ich geh mal davon aus, daß Schokohase weiß was erschreibt.
Ja schon aber ich arbeite erst mit 3 tagen mit delphi und ich würde gerne ein bisschen versthen was ich programmiere und nicht einfach stumpf abschreiben.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.571 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 10:04
Eine TStringList sortiert strings und keine Zahlen und da ist die Sortierung '24', '5', '67', '9' durchaus richtig.
Wenn du also Zahlen speichern und sortieren willst, dann pack sie in eine TList<Integer> (unit System.Generics.Collections)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.227 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 10:12
Zitat:
dann pack sie in eine TList<Integer>
...wäre auch meine bevorzugte Variante.

1. Lesen was TList<> ist. http://docwiki.embarcadero.com/Libra...lections.TList
2. dann machst du aus den Strings in der TStringlist richtige Zahlen (Integer) und packst sie in die TList<Integer)
3. TList<Integer>.Sort Sortieren
4. TList durchlaufen und die Zahlen wieder nach String wandeln, damit sie in der Listbox angezeigt werden können.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.976 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 10:47
Eine TStringList sortiert strings und keine Zahlen und da ist die Sortierung '24', '5', '67', '9' durchaus richtig.
Das kann man aber zumindest mit einem CustomSort beeinflussen (siehe https://www.delphipraxis.net/1445547-post9.html)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.571 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 12:03
Was man nicht alles kann... Frage ist eher, ob man das einem Anfänger so beibringt oder ihm lieber anrät, Daten auch in ihrem optimalen Format zu verarbeiten und nur von Eingabe und nach Anzeige in Strings umzuwandeln. Sonst kommen nämlich irgendwann so Fragen wie "Hilfe, mein Program ist langsam, woran liegt das"
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
16.478 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Zahlen Soritieren nach größe

  Alt 11. Sep 2019, 13:22
Stichwort wäre hier "Natural Sort".
Und das würde (im Gegensatz zu Nutzung von TList<Integer>) auch mit gemischten Daten (Zahlen und Text) zurecht kommen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf