Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bestimmte Zeile aus Listbox entfernen
$ebbi - Fr 18.05.12 22:01
Titel: Bestimmte Zeile aus Listbox entfernen
Hey,
ich würde gerne alle Einträge aus der Listbox entfernen, die auf den Buchstaben 'p' enden.
Delphi-Quelltext
1: 2: 3: 4: 5:
| for x := 0 to Listbox1.items.Count - 1 do begin string:=listbox1.Items.Strings[x]; if string[length(string)] = 'p' then listbox1.Items.Delete[x]; end; |
dummerweise bekomme ich hier die Felehrmeldung "Nicht genügend wirkliche Parameter". Woran liegt das? es scheint alles zu klappen wenn ich mir x anzeigen lasse erkennt er alles wunderbar. Ich denk die antwort ist bestimmt total einfach aber ich seh den Fehler einfach nicht ;)
mfg Sebbi
Edit: Ich idiot hab das x in [] gesetzt () habs aber einfach nicht gesehen. Sry für den thread :(
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Fr 18.05.2012 um 22:15
Narses - Fr 18.05.12 22:17
Moin!
$ebbi hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3:
| for x := 0 to Listbox1.items.Count - 1 do begin string:=listbox1.Items.Strings[x]; | |
Ich hoffe, du hast die Variable nicht wirklich "string" genannt, oder? Das ist keine gute Idee, da String ein reserviertes Wort und auch ein Funktionsname ist, also sehr viel Raum für Seiteneffekte lässt. :? Nenn die Variable doch z.B. "tmpString" oder so. :idea:
cu
Narses
Delphi-Laie - Fr 18.05.12 22:40
Narses hat folgendes geschrieben : |
Ich hoffe, du hast die Variable nicht wirklich "string" genannt, oder? Das ist keine gute Idee, da String ein reserviertes Wort und auch ein Funktionsname ist, also sehr viel Raum für Seiteneffekte lässt. |
Diese Seiteneffekte sind ausgeschlossen. Ein reserviertes Wort kann man nicht als Variable deklarieren. Der Compiler verweigert die Übersetzung.
Mathematiker - Sa 19.05.12 08:26
Hallo $ebbi,
außer dem schon Genannten (Variable darf nicht string heißen), funktioniert auch die Zählschleife nicht, da zu Beginn der Schleife der Endwert ermittelt wird. Löschst Du einen Eintrag, so ändert sich die Zahl der Einträge, jedoch nicht der Endwert der Schleife. Besser ist eine endprüfende Schleife, z.B.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| x := 0; repeat k:=listbox1.Items.Strings[x]; if k[length(k)] = 'p' then listbox1.Items.Delete(x) else inc(x); until x>Listbox1.items.Count - 1; |
x wird nur dann erhöht, wenn der String nicht gelöscht wurde. Andernfalls überspringst Du Einträge.
Beste Grüße
Mathematiker
$ebbi - Sa 19.05.12 13:12
keine angst :D wollte nur zeigen dass es sich hier halt um eine string variable handelt war im nachhinein wohl nicht gut durchdacht
Mathematiker hat folgendes geschrieben : |
Hallo $ebbi,
außer dem schon Genannten (Variable darf nicht string heißen), funktioniert auch die Zählschleife nicht, da zu Beginn der Schleife der Endwert ermittelt wird. Löschst Du einen Eintrag, so ändert sich die Zahl der Einträge, jedoch nicht der Endwert der Schleife. Besser ist eine endprüfende Schleife, z.B.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| x := 0; repeat k:=listbox1.Items.Strings[x]; if k[length(k)] = 'p' then listbox1.Items.Delete(x) else inc(x); until x>Listbox1.items.Count - 1; |
x wird nur dann erhöht, wenn der String nicht gelöscht wurde. Andernfalls überspringst Du Einträge.
Beste Grüße
Mathematiker |
jop ist mir beim testen dann auch aufgefallen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!