![]() |
Delete strings in ListBox
Hallo,
ich habe eine List in ListBox1 und wollte alle letze 2 Strings löschen
Delphi-Quellcode:
end;
procedure TForm1.Button1Click(Sender: TObject);
var i, j : Integer; begin for i := ListBox1.Items.Count-1 downto ListBox1.Items.Count-2 do Delete(ListBox1.Items[i]); // ich möchte also nicht die Zeilen löschen sondern die letzte 2 Strings in jede Zeile in ListBox löschen Ich muss also auch in jede Zeile suchen |
Re: Delete strings in ListBox
Warum eine schleife, wenn du nur die letzten beiden Einträge löschen willst? Und Delete löschte Zeichen aus einer Zeichenkette. Wenn du nur den Text löschen möchtes, dann weise den Items eine leere Zeichenkette zu.
|
Re: Delete strings in ListBox
Die Eigenschaft 'Items' der Listbox ist ein TStrings-Objekt. Diese Klasse stellt die richtigen Methoden bereit. Schau mal in der Delphi-Hilfe unter TStrings oder der Eigenschaft 'Items' einer Listbox.
|
Re: Delete strings in ListBox
Du kannst nicht mit den Zeilen der Listbox direkt arbeiten, bzw. nicht an Delete übergeben, sondern musst die erst in nem String zwischenspeichern, den bearbeiten und dann der ListBox wieder zuweisen.
Grundlagen wissen solltest du ja inzwischen schon genug haben und auch wissen, wie man die Delphi Hilfe benutzt. ;) [edit] Achso, verlesen. Dachte du wolltest die letzten zwei Zeichen der Strings löschen ... [/edit] |
Re: Delete strings in ListBox
Mal davon abgesehen, dass der Quellcode wieder mal totaler Quatsch ist:
Zitat:
Zitat:
|
Re: Delete strings in ListBox
Was willst Du löschen? Die letzten beiden Zeilen oder jeweils die letzten beiden Zeichen je Zeile?
|
Re: Delete strings in ListBox
natürlich die letzte 2 Zeichen je Zeile
Ich versuche nun mit Length, pos |
Re: Delete strings in ListBox
setLength()
|
Re: Delete strings in ListBox
Delete(Str, Length(str)-1, 2);
|
Re: Delete strings in ListBox
Nur der Vollständigkeit halber:
Delphi-Quellcode:
str := Copy(str,1,Length(str) - 2);
|
Re: Delete strings in ListBox
Zitat:
Wo ist ListBox1? |
Re: Delete strings in ListBox
Zitat:
|
Re: Delete strings in ListBox
Erst denken, dann posten. Übersetz meinen Code mal ins Deutsche: "Der neue String setzt sich aus einer Kopie des alten abzüglich der letzten 2 Zeichen zusammen". Nun klar? Und die Variable str hab ich einfach frech von meinem Vorposter übernommen.
|
Re: Delete strings in ListBox
Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, k : Integer; dateiname : String; begin for i := 0 to ListBox1.Items.Count-1 do dateiname := ListBox1.Items[i]; k := length(dateiname); if k > 5 then // ab 6. Zeichen sollen gelöscht werden <.. hier soll weiter ...> end; end. |
Re: Delete strings in ListBox
Hier kannst du jetzt sämtliche Alternativen von oben anwenden z.B.
Delphi-Quellcode:
setLength( dateiname, 5);
|
Re: Delete strings in ListBox
Delphi-Quellcode:
if k > 5 then Delete(k,6,Length(k)-5);
|
Re: Delete strings in ListBox
Wie wärs mit
Delphi-Quellcode:
Bei den ganzen copy-Beispielen war das aber eigentlich nicht schwer zu erraten, oder :gruebel:
listbox1.items[i] := copy(listbox1.items[i],1,5) ;
|
Re: Delete strings in ListBox
Er will doch löschen und nicht kopieren :mrgreen:
|
Re: Delete strings in ListBox
Zitat:
|
Re: Delete strings in ListBox
:wall: Schonmal was von Denken gehört? Das ist das, was in den grauen Zellen zwischen den Ohren passieren sollte.
|
Re: Delete strings in ListBox
Zitat:
Delphi-Quellcode:
[/quote]
listbox2.items[i] := copy(listbox1.items[i],1,5) ;
aber ich möchte von rechts nach links kopieren ich habe so versucht :
Delphi-Quellcode:
for i := ListBox1.Items.Count-1 to 0 do
listbox2.items[i] := copy(listbox1.items[i],1,5) ; // passiert leider nichts |
Re: Delete strings in ListBox
Taktaky,
nimm mal Sebastian's Tipp ernst. Denken ist hier ausdrücklich erlaubt, gell :wink: |
Re: Delete strings in ListBox
Gib mal ein Vorher-Nachher-Beispiel, sonst wird das eh wieder nix.
|
Re: Delete strings in ListBox
Du wolltest die ersten x Zeichen nicht die letzten!
Delphi-Quellcode:
Delete( s, Length(s)-<Länge>, <Länge>);
|
Re: Delete strings in ListBox
Erst will er den String löschen, dann die letzten beiden Zeichen, jetzt von rechts nach links (was immer damit gemeint ist)... ohne Beispiel poste ich in diesem Thread nichts mehr, das ist doch keine Raterunde hier.
|
Re: Delete strings in ListBox
Stimmt er könnte meinen vopn rechts her oder den String umdrehen. Vielleicht will er auch was ganz anderes :gruebel:
|
Re: Delete strings in ListBox
Ich wundere mich, dass meine Frage für einige immer noch nicht klar ist :wall:
in die Listbox habe ich eine List. Die Zeilen sind nicht gleich lang Ich möchte einfach 2 oder 3 Zeichen von rechts nach links löschen (d.h. die letzte 3 Zeichen löschen) Mehr nicht Beispiel : Zeile1 Zeilllle2 Zeillllllle3 Zeillllllllllle4 Alles was Fett ist soll weg :mrgreen: |
Re: Delete strings in ListBox
Zitat:
|
Re: Delete strings in ListBox
2 oder 3 Zeichen? Da wunderst Du Dich, dass das nicht klar ist? :wall:
|
Re: Delete strings in ListBox
Und was ist das Problem? Oben wurden dir doch mehrere Lösungen für dein Problem (Delete, setLength, Copy). was gefällt dir an den Lösungen nicht?
|
Re: Delete strings in ListBox
@taktaky: ein paar Fragen: was macht die Funktion Copy, was die Funktion Length und wofür gibt es Blöcke mit begin end?
|
Re: Delete strings in ListBox
Zitat:
|
Re: Delete strings in ListBox
Der Verdacht drängt sich auf.
|
Re: Delete strings in ListBox
Hallo taktaky,
n < 0 entfernt die Zeichen am Ende jedes Strings:
Delphi-Quellcode:
Gute Nacht
procedure TruncateStrings(s: TStrings; n: Integer);
var i: Integer; begin if n <> 0 then for i := 0 to Pred(s.Count) do if n < 0 then s[i] := Copy(s[i], 1, Length(s[i]) + n) else s[i] := Copy(s[i], n + 1, MaxInt); end; |
Re: Delete strings in ListBox
Was denn nun... 2 Zeichen. 3 Zeichen??? werdens morgen 6 :wall:
Nocheinmal ganz ausdrücklich für dich: Es wurden dir hier einige brauchbare Lösungen genannt. Jetzt schalte einmal bitte die Gewebemasse zwischen deinen beiden Trommelfellen kurz ein, und denk mal über die funktionen Copy, Delete und Length nach, was die machen. Wenn du das nicht weisst, dann schau in die OH von deinem Delphi. So jedenfalls kommen wir auf keinen grünen Zweig. Ist das denn so schwer zu kapieren :evil: |
Re: Delete strings in ListBox
Die lösung ist nicht mehr als eine Zeile aber die Leute schreiben mir nun Funktionen
Wer weiß, vielleicht kommt einer mit Vorschlag mit einem Package, die letzte 2 Zeichen löscht :mrgreen: |
Re: Delete strings in ListBox
Zitat:
so wird zeichen Zeichen von links nach rechts kopiert :
Code:
...
for i:= 0 to ListBox1.Items.Count-1 do listbox2.items[i] := copy(listbox1.items[i],1,3) |
Re: Delete strings in ListBox
Hat es aber ziemlich lang gedauert
|
Re: Delete strings in ListBox
Zitat:
Delphi-Quellcode:
Ist das nicht eine Zeile?
String := Delete(String, Length(String)-<Länge>, <Länge>);
Zitat:
Wieso hast du nun eigentlich plötzlich 2 Listboxen? |
Re: Delete strings in ListBox
Mehrzeilige Schleifen sollten (ausser repeat-until) in begin-end eingeschlossen werden.
[edit] Oh sorry, garnicht gesehen, dass das schonwieder 3 Seiten geworden sind ... :mrgreen: [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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