![]() |
Listbox - "Leeritem" löschen
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. |
Re: Listbox - "Leeritem" löschen
Delphi-Quellcode:
:thumb:
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 ;) |
Re: Listbox - "Leeritem" löschen
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); |
Re: Listbox - "Leeritem" löschen
:gruebel: Was spricht dagegen, diese "Leeritems" einfach zu löschen, wie du es ja auch schon in deinem Titel schreibst? :gruebel:
Delphi-Quellcode:
//Mist, ich hab heut einfach kein Glück, ständig der rote Kasten :lol:
For i := high(ListBox1.Items) DownTo low(ListBox1.Items) Do
If ListBox1.Items[i] = '' Then ListBox1.Items.Delete(i); Ich denke aber, daß meine Variante schneller sein wird (:P), 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 :? |
Re: Listbox - "Leeritem" löschen
Ich danke euch, geht einwandfrei. Zu dieser Zeit bin ich zu nichts mehr fähig. :cheers:
|
Re: Listbox - "Leeritem" löschen
Der Compiler dürft auch etwas gegen Lukes Version haben, weil die Items-Eigenschaft wegen des VAR-Parameters nicht übergeben werden kann. :wink:
Das "VAR" kann aber ersatzlos gestrichen werden. Gruß Hawkeye |
Re: Listbox - "Leeritem" löschen
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).
|
Re: Listbox - "Leeritem" löschen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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