AGB  ·  Datenschutz  ·  Impressum  







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

Bei Sortierung Komma zeichen ignorieren

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

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

Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 10:32
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?
 
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 11:07
Nur indem man seine eigene Sortierungsfunktion (bzw. Comparer) verwendet. Was soll den sortiert werden? (StringListe?)
Markus Kinzler

Geändert von mkinzler (10. Sep 2019 um 11:09 Uhr)
 
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 11:20
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?
 
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 11:26
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;
 
DelphiDustin

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

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 11:40
@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.
 
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 11:45
..sollte es nicht auch so funktionieren:

Delphi-Quellcode:
sl := TStringList.create;
sl.delimiter := ',';
sl.delimtedText := edit1.Text;
sl.sorted := true;
ungetestet

Grüße
Klaus
Klaus

Geändert von Klaus01 (10. Sep 2019 um 14:22 Uhr)
 
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 12:02
Das würde ich vlt hinbekommen aber es soll hat nur in einem edit feld stehen.
Wäre doch trotzdem schon einmal besser als nichts, oder? Weil da hättest du dich zwangsläufig schon einmal damit befassen müssen wie man den Inhalt des Edit-Felds (String) in eine Zahl umwandelt. Also das was dir der nette Schokohase schon fertig in seinem Quelltext-Schnippsel zeigt
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 16:24
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 16:37
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Bei Sortierung Komma zeichen ignorieren

  Alt 10. Sep 2019, 16:59
Er nun wieder.

Aber wie und wo bekommt deine Sortierfunktion die Parameter übergeben?
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen
Seite 1 von 2  1 2      


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