AGB  ·  Datenschutz  ·  Impressum  







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

Listbox - "Leeritem" löschen

Ein Thema von Balu der Bär · begonnen am 13. Apr 2006 · letzter Beitrag vom 13. Apr 2006
Antwort Antwort
Balu der Bär
(Gast)

n/a Beiträge
 
#1

Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:18
Ich nochmal,

habe jetzt folgendes Problem: Eine Listbox die unterschiedlich gefüllt ist. Manchmal sind auch ein oder zwei Leeritems drin, dass heißt eine Zeile ohne Inhalt darin. Wie kann ich diese Items löschen sodass der nachfolgende Inhalt direkt unter des zuletzt mit Inhalt befüllten Items steht (also alles einfach nachrutscht) ? Jemand ne Idee ? Thx.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:23
Delphi-Quellcode:
procedure DeleteEmptyLines(const lines: TStrings);
begin
while lines.IndexOf('') <> -1 do
  lines.Delete(lines.IndexOf(''))
end;

//Aufruf:
DeleteEmptyLines(Listbox1.Items);


EDIT: streichen könnte man das var, const ist aber schöner
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:24
Eswas schneller geht es mit einer rückwärts laufenden FOR-Schleife:

Delphi-Quellcode:
for i := ListBox1.Items.Count - 1 downto 0 do
  if ListBox1.Items[i] = 'then
    ListbOx1.Items.Delete(i);
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:25
Was spricht dagegen, diese "Leeritems" einfach zu löschen, wie du es ja auch schon in deinem Titel schreibst?

Delphi-Quellcode:
For i := high(ListBox1.Items) DownTo low(ListBox1.Items) Do
  If ListBox1.Items[i] = 'Then ListBox1.Items.Delete(i);
//Mist, ich hab heut einfach kein Glück, ständig der rote Kasten
Ich denke aber, daß meine Variante schneller sein wird (), da bei mir die Items genau einmal durchlaufen werden, während es bei Lukes Version mindestens einmal passiert.

//Edit: Na toll, den 2. roten Kasten hatte ich gar nicht gesehen
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#5

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:31
Ich danke euch, geht einwandfrei. Zu dieser Zeit bin ich zu nichts mehr fähig.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:31
Der Compiler dürft auch etwas gegen Lukes Version haben, weil die Items-Eigenschaft wegen des VAR-Parameters nicht übergeben werden kann.
Das "VAR" kann aber ersatzlos gestrichen werden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:32
high(ListBox1.Items) und low(ListBox1.Items) wird nicht gehen, da ListBox1.Items kein Array sondern ein Property-Array ist (wird auch als Indexer bezeichnet).
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Listbox - "Leeritem" löschen

  Alt 13. Apr 2006, 23:37
Zitat von jbg:
high(ListBox1.Items) und low(ListBox1.Items) wird nicht gehen, da ListBox1.Items kein Array sondern ein Property-Array ist (wird auch als Indexer bezeichnet).
Ja, das ist natürlich wahr. Und da die Items immer bei 0 beginnen und bis Count-1 laufen ist deine Version natürlich absolut korrekt. Was zählt ist die Idee in meinem Code
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  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 04:53 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