Toon posts:

[Delphi]Meerdere files deleten uit listbox1

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet iemand hoe je uit een listbox waar allemaal tracks van liedjes in staan meerdere files uit kunt deleten?

Mike

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Dit is toch in de vorige twee topics van je ook al beantwoord :?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

ListBox1.Items.Delete(Index);

:?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
niet direct. Ik weet niet wat er mee bedoeld wordt. Ik had een verkeerde topic naam uitgekozen en dacht zo een betere indruk achter te laten.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

* dusty zingt "Van achter naar Voor".

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
waar staat index voor hoe heb je die gedefineerd?
Ik heb nu voor 1 file te deleten:
listbox1.items.delete(listbox1.itemindex);
is 'index' een voor gedefineerde woord van delphi?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

"Index" is het nummer van de regel die je uit de lijst wilt verwijderen, dus vervangen met je eigen variabele.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Om het iets duidelijker te formuleren:

ListBox1.Items.Delete(i);

"i" Is hier de integer-variabele die de index aangeeft van de filenaam die je wilt deleten. De index van het eerste item in de lijst is 0, de 2e is 1, enzovoort.

Het woord index is wordt gebruikt bij het definieren van collection properties. Bijvoorbeeld de property strings van een TStringList object.

:)

edit:

Was dus weer te laat... :P

Ik ben tenminste niet altijd hypocriet!


Verwijderd

Topicstarter
Ok bedankt, ik ga het proberen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Op maandag 21 januari 2002 09:53 schreef dusty het volgende:
* dusty zingt "Van achter naar Voor".
Dusty heeft een mooi liedje gekozen :)

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Op maandag 21 januari 2002 09:54 schreef yellowwebber het volgende:
waar staat index voor hoe heb je die gedefineerd?
Ik heb nu voor 1 file te deleten:
listbox1.items.delete(listbox1.itemindex);
is 'index' een voor gedefineerde woord van delphi?
Besef wel dat uw file niet zal gedeleted worden, maar dat enkel dat ene regeltje uit uw listbox zal verdwijnen. Maar dat wist je wel zeker?

https://fgheysels.github.io/


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 08:06

Tomatoman

Fulltime prutser

Let er als je meerdere items verwijdert op, dat je van achteren naar voren verwijdert. Stel dat je uit een TList (TListBox.Items is een TList) met vijf items het tweede en vierde item verwijdert. Als je dit doet:
code:
1
2
3
4
5
6
with ListBox1.Items do
begin
  Delete(1);  // delete tweede item
  { volgende regel is niet goed: }
  Delete(3);  // delete vierde item - dit is nu het laatste van de vijf items!
end;

heb je een bug. Het vierde item is door het deleten van het tweede item immers een plaats naar boven geschoven en inmiddels het derde item geworden. Goed is dus:
code:
1
2
3
4
5
with ListBox1.Items do
begin
  Delete(3);  // delete vierde item
  Delete(1);  // delete tweede item
end;

Meer algemeen, als je items uit een list delete in een lus doe je dat als volgt:
code:
1
2
for n := 2 downto 0 do      // voorbeeldje: verwijder 1e t/m 3e item
  ListBox1.Items.Delete(n);

Een goede grap mag vrienden kosten.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 21 januari 2002 10:23 schreef tomatoman het volgende:
Let er als je meerdere items verwijdert op, dat je van achteren naar voren verwijdert. Stel dat je uit een TList [....]
Leuk verhaaltje, Echter de reden waarom het van achter naar voren is heeft een andere oorsprong, Dit is namelijk dat je heel vaak verwijdert op wat geselecteerd is. ( item(x).selected ) Als je een item verwijderd wordt alles met een hoger index nummer ge-herindexeerd, waardoor de selected bij al die velden op FALSE komen te staan, resultaat zou zijn dat als van voren naar achter verwijderd je alleen de eerste item die geselecteerd is verwijderd.

Jouw probleem zou je makkelijk kunnen oplossen door ipv van delete(1) en delete(3)
een
delete(1) en delete(2)

te doen. Het probleem met selected is echter niet op een andere manier effectief op te lossen, (nee eerst doorlopen en dan opslaan welke is geselecteerd is NIET effectief ook vanwege de reden die jij al zei dat er een hernummering ontstaat.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15-09 19:59

Creepy

Tactical Espionage Splatterer

code:
1
2
while list.count > 0
   list.delete(0);

Is misschien wat handiger dan?
Want zodra je er 1 uit weghaalt, zal (uiteraard) ook de index van de items achter diegene die verwijderd is, zijn aangepast.

En als we toch bezig zijn:
code:
1
list.items.clear;

, om ze allemaal weg te halen, maar ik neem aan dat je die al kende.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

var
i : integer ;
begin
i := listbox1.Items.Count -1 ;
while i > -1 do
begin
if listbox1.Selected[i] then listbox1.Items.Delete(i);
i := i -1 ;
end;

deze verwijderd alle geselecteerde items in een listbox

:P

Verwijderd

hmm heb weer lekker ziten prutsen natuurlijk
code:
1
2
3
4
5
6
7
8
9
var
i : integer ;
begin
i := listbox1.Items.Count  ;
while i > 0 do
 begin
 if listbox1.Selected[i] then listbox1.Items.Delete(i);
 i := i -1 ;
 end;

is natuurlijk beter

Verwijderd

Topicstarter
Het werkt allemaal bedankt,

Mike :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 21 januari 2002 18:12 schreef The_milkman het volgende:
hmm heb weer lekker ziten prutsen natuurlijk
code:
1
2
3
[...]
while i > 0 do
[..]

is natuurlijk beter
Natuurlijk zou hier een for lus nòg beter zijn.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1