AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language FreePascal Delphi Listbox Items nach Teil String sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Listbox Items nach Teil String sortieren

Ein Thema von Zeref Darkmage · begonnen am 22. Dez 2017 · letzter Beitrag vom 1. Jan 2018
Antwort Antwort
Solutor

Registriert seit: 24. Dez 2017
15 Beiträge
 
Delphi XE2 Enterprise
 
#1

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 24. Dez 2017, 12:23
Ein paar Erläuterungen zu meiner Arbeitsweise:
Listbox Co. verwende ich in der Regel nur zur Anzeige und dann mit OwnerDraw.
Meine Daten selbst halte ich immer in Stringlisten vor, wobei ich hier maist die Objektliste verwende.
Aus diese Weise lassen sich einzelne Datenelemente einfach und vor Allem schnell suchen, sortieren, und manipulieren.
Ergänzungen an der Struktur, dem Verhalten und der Visualisierung sind so viel einfacher und flexibler.
Einziger Nachteil ist der Aufwand beim Erstellen der Grundstruktur. Dieser Nachteil ist bereits nach kurzer Zeit ausgeglichen.
  Mit Zitat antworten Zitat
Zeref Darkmage
(Gast)

n/a Beiträge
 
#2

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:01
Hi da bin ich wider. Nach dem alles super funktioniert hat bin ich wider da und knüpfe an diesem Beitrag eine Frage an und hoffe das sie gelesen wird ^^ . Dachte dass ich kein neuen Thread

aufmachen muss wenn die Frage zum Programm gehört. Falls es doch erwünscht ist mache ich es natürlich ^^


folgendes: ich möchte mit Listbox1.items.LoadFromFile(); mehrere txt datein einlesen,

71524 Tobi 7623 Müller
292748 Max 872 Müller
89237 Lucas 8723 Müller

diese Datein beinhalten alle Zeilenweise die gleiche Syntax, soweit kein Problem für mich wenn ich im Quelltext bei LoadFromFile den Pfad explizit angebe. Allerding sind das datein welche zwar

alles z.b Liste.txt heißen allerdings

da es mehere sind würden sie bei mir entweder umbenannt werden damit sie im selben Pfad liegen können oder bekommen Liste(1).txt,Liste(2).txt... als namen.

In jedem fall würde es so nicht im Quelltext drin stehen. Heißt ich brauche eine Möglichkeit wie ich flexibel die txt datein laden kann .



hat jemand für mich deswegen vllt ein paar stichworte nach dem ich im Web suchen muss

Lg Zeref

Geändert von Zeref Darkmage (31. Dez 2017 um 16:02 Uhr) Grund: änderung
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:07
Zitat:
In jedem fall würde es so nicht im Quelltext drin stehen. Heißt ich brauche eine Möglichkeit wie ich flexibel die txt datein laden kann .
Du hast dir deine Antwort schon selber gegeben
Zitat:
soweit kein Problem für mich wenn ich im Quelltext bei LoadFromFile den Pfad explizit angebe.
  Mit Zitat antworten Zitat
Zeref Darkmage
(Gast)

n/a Beiträge
 
#4

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:34
wenn ich sage:"In jedem fall würde es so nicht im Quelltext drin stehen. Heißt ich brauche eine Möglichkeit wie ich flexibel die txt datein laden kann ."

ist gemeint, wie auch sonst, dass ich eine Möglichkeit brauche wie ich sie flexibel laden kann



und wenn ich sage das ich sie flexibel laden möchte und hier aber steht:"

soweit kein Problem für mich wenn ich im Quelltext bei LoadFromFile den Pfad explizit angebe."

ist mit explizit gemeint, wie auch sonst, dass es eben nicht flexibel ist

und ich nicht weiterkomme

lg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#5

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:36
Nehmen wir an, dass die Dateien mit beliebigen Namen alle in einem Verzeichnis liegen, dann könntest Du recht einfach mit FindFirst arbeiten.

Oder wäre ein Dialog eine Alternative?

Ein Dateiauswahldialog, den so konfigurieren, dass mehrere Dateien ausgewählt werden können und diese dann alle laden. (Klingt komplizierter, als es ist.)

Einen Dialog nutzen, der "nur" zur Auswahl eines Verzeichnisses dient und dann im ausgewählten Verzeichnis alle Dateien lesen ...

Mit LoadFromFile kann man aber nicht mehrere Dateien gleichzeitig laden, sondern immer nur eine.

Aber: Items ist vom Typ TStrings und hat die Methode AddStrings. Damit kann man den Inhalt einer Stringliste zu den vorhandene Items hinzufügen. Grob ungefähr sowas (ungetestet hingedaddelt):
Delphi-Quellcode:
var
  sl : TStringList;
  sr : TSearchRec;
begin
  sl := TStringList.Create;
  Listbox1.Items.Clear;
  // Statt Liste*.txt irgendeinen Namensplatzhalter nach eigenen Wünschen.
  // Ggfls. auch noch 'nen Pfad mit angeben.
  If FindFirst('Liste*.txt',faAnyFile,sr) = 0 then begin
    Repeat
      sl.LoadFromFile(sr.Name);
      Listbox1.Items.AddStrings(sl);
    until FindNext(sr) <> 0;
  end;
  FindClose(sr);
  sl.Free;
end;
  Mit Zitat antworten Zitat
Zeref Darkmage
(Gast)

n/a Beiträge
 
#6

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:52
Cool also funktioniert hat es was echt super ist, lädt praktischer weise Zeilenweise xD

bloß noch die Frage es lädt nur nach der angegebenen Datei im Quellcode und nimmt so gesehen nicht die nächste

lg Zeref
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:55
Zitat:
Cool also funktioniert hat es was echt super ist, lädt praktischer weise Zeilenweise xD
Der Code lädt nicht zeilenweise. Wenn du denkst der Code würde genau das tun und dafür da sein, hast du ihn nicht verstanden.

Zitat:
bloß noch die Frage es lädt nur nach der angegebenen Datei im Quellcode und nimmt so gesehen nicht die nächste
Guck dir den Code an dann weißt du was du an deinen Dateien zu ändern hast.
  Mit Zitat antworten Zitat
Zeref Darkmage
(Gast)

n/a Beiträge
 
#8

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 16:58
[QUOTE=LTE5;1389990]
Zitat:
Der Code lädt nicht zeilenweise. Wenn du denkst der Code würde genau das tun und dafür da sein, hast du ihn nicht verstanden.
Wenn ich sage es lädt zeilenweise, dann lädt es aus der datei die zeilen jeweils auch so wie sie drin stehen


UNd meine Frage an dich,hast du nichts zum beitragen oder warum machst du einen auf Korinthenkacker ?

lg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#9

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 17:14
Hier FindFirst('Liste*.txt',faAnyFile,sr) steht im ersten Parameter von FindFirst ein Platzhalter für den Dateinamen.

Es werden also in dem Beispiel alle Dateien geladen, deren name dem Muster [i]Listeirgendwas.txt[(i] entsprechen. Wenn es da nur eine Datei gibt, wird auch nur die geladen. Hier sollten also alle Dateien mit den Namen Liste1.txt, Liste2.txt ... geladen werden.
Man könnte auch FindFirst('*.*',faAnyFile,sr) angeben, aber dann werden nicht nur Textdateien, sondern auch Exen, DLLs ... geladen, das wäre vermutlich eher suboptimal

Deine Namensvorstellungen von weiter oben (Liste(1).txt,Liste(2).txt ...) müssten mit der Routine eigentlich umsetzbar sein.

Die Routine fügt mit AddStrings die zuletzt gelesene Datei immer "hinten an". Der Inhalt von Items ist also nicht irgendwie sortiert.

Aber dem können wir abhelfen (wieder nur hingedadddelt und ungetestet):
Delphi-Quellcode:
var
  sl : TStringList;
  slAlles : TStringList;
  sr : TSearchRec;
begin
  sl := TStringList.Create;
  slAlles := TStringList.Create;
  Listbox1.Items.Clear;
  // Statt Liste*.txt irgendeinen Namensplatzhalter nach eigenen Wünschen.
  // Ggfls. auch noch 'nen Pfad mit angeben.
  If FindFirst('Liste*.txt',faAnyFile,sr) = 0 then begin
    Repeat
      sl.LoadFromFile(sr.Name);
      slAlles.AddStrings(sl);
    until FindNext(sr) <> 0;
  end;
  FindClose(sr);
  slAlles.Sort;
  Listbox1.Items.AddStrings(slAlles);
  slAlles.Free;
  sl.Free;
end;
Wenn Du Besonderheiten bei der Sortierung haben möchtest, so schau Dir mal die Möglichkeiten von TStringList an. Da gibt es auch die Option, eine eigene Sortierroutine zu nutzen. Dazu dient die Methode CustomSort, Infos dazu findest Du z. B. hier: TStringList CustomSort site:delphipraxis.net
  Mit Zitat antworten Zitat
Zeref Darkmage
(Gast)

n/a Beiträge
 
#10

AW: Delphi Listbox Items nach Teil String sortieren

  Alt 31. Dez 2017, 17:28
Danke! Ich hatte mir auf deinem Kommentar hin noch mal fix Open Dialog angeguckt und muss sagen das es wirklich um welten einfach zu handeln ist ^^

ich werde mich dafür entscheiden.ich hatte zu test auch die andere variante benutzt.

echt cool
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 11:45 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