/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Listbox hjælp
Fra : Peter Arnholm


Dato : 13-09-01 15:54

Jeg har en listbox med en masse text i. Jeg vil gerne have slettet alt text
fra top
til en bestemt text. Men noget går galt i koden og jeg kan ikke lige se
hvad.
Nogen der kan hjælpe ?

var
i,r:Integer;
begin
i:=0;
r:=Listbox1.items.IndexOf('tracks');
try
repeat
ListBox1.Items.delete(i);
Inc(i);
until
(i = r)
except on E:exception do
begin
blablabla



 
 
Peter Arnholm (13-09-2001)
Kommentar
Fra : Peter Arnholm


Dato : 13-09-01 16:03

"Peter Arnholm" <PeterArnholm@mail.dk> skrev i en meddelelse
news:3ba0c844$0$89073$edfadb0f@dspool01.news.tele.dk...
> Jeg har en listbox med en masse text i. Jeg vil gerne have slettet alt
text
> fra top
> til en bestemt text. Men noget går galt i koden og jeg kan ikke lige se
> hvad.
> Nogen der kan hjælpe ?

Doh, nevermind
--
PA



Roald Henriksen (13-09-2001)
Kommentar
Fra : Roald Henriksen


Dato : 13-09-01 22:48

Lige en lille finte:
Når du sletter noget i en liste er denne syntaks den bedste at anvende:
for a:= x downto y do....
Læg mærke til at der tælles ned (downto). Det er nødvendigt, fordi antallet
af linier jo hele tiden mindskes med 1 for hvert gennemløb.

Eksempel:
Liste med 20 linier. Der ønskes slettet fra linie 15 til 18.

for a:= 18 downto 15 do....
Det virker hver gang, men se nu her:
for a:= 15 to 18 do....
Av, av, her er overløb, når du forsøger at fjerne en linie, der ikke længere
er i listen.

Mvh RH




Lars Bargmann (14-09-2001)
Kommentar
Fra : Lars Bargmann


Dato : 14-09-01 09:17


"Roald Henriksen" <mail@pentagon-electric.dk> wrote in message
news:BP9o7.3381$lk7.72295@news.get2net.dk...
> Lige en lille finte:
> Når du sletter noget i en liste er denne syntaks den bedste at anvende:
> for a:= x downto y do....
> Læg mærke til at der tælles ned (downto). Det er nødvendigt, fordi
antallet
> af linier jo hele tiden mindskes med 1 for hvert gennemløb.
>
> Eksempel:
> Liste med 20 linier. Der ønskes slettet fra linie 15 til 18.
>
> for a:= 18 downto 15 do....
> Det virker hver gang, men se nu her:
> for a:= 15 to 18 do....
> Av, av, her er overløb, når du forsøger at fjerne en linie, der ikke
længere
> er i listen.
>
> Mvh RH
>

Desuden bliver elementerne jo rykkes "nedad" i listen når et foran-liggende
element bliver slettet...
Eks : En liste med 5 elementer [0..4]. Man sletter element 0, hvorefter de
resterende elementer bliver rykket nedad. Der må nødvendigvis også ligge
noget processortid der bliver spildt her. I det spørgsmål som Peter Arnholm
stiller vil han jo (udover den ineffektive sletning af elementer) første
gang slette element 0, derefter element 2, derefter element 4 og så
videre...
Det eneste eksempel jeg lige kan komme på, hvor en while/repeat løkke ville
være rigtigt, er ved gennemløb af en liste, med det formål at slette
elementer som matcher bestemte kriterier.... Eks :

i := 0;
While i < TheList.Count do
begin
if MatcherKriterie(TheList[i]) then
TheList.Delete(i)
else
Inc(i);
end;

Bargmann...
- Definition of upgrade: Take old bugs out; put new ones in.





Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste