/ 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
Hvorfor virker denne kode ikke...
Fra : DENNIS LARSEN


Dato : 08-01-01 10:31

Hvorfor for jeg en adresse fejl som hedder FFFFFF ( kan ikke huske om det 6
eller 8 F'er ).

Procedure MainForm.button1click(sender ...... );
Var
X: Integer;
BEGIN
FOR X := 0 TO ListView1.Items.Count DO
IF ListView1.Items.Item[X].Selected = True THEN
MainForm.ListView1.Items.Item[X].Delete;
END;

Og det gir den samme kode hvis der er denne kode:

Procedure MainForm.button1click(sender ...... );
Var
X: Integer;
BEGIN
FOR X := 0 TO ListView1.Items.Count - 0 DO
IF ListView1.Items.Item[X].Selected = True THEN
MainForm.ListView1.Items.Item[X].Delete;
END;

Hvad går der galt?

--

Hilsen
Dennis Larsen

ICQ: 65241472
Hjemmeside: http://hjem.get2net.dk/DennisLarsen
E-Mail: larsen.dennis@get2net.dk




 
 
Lars Bargmann (08-01-2001)
Kommentar
Fra : Lars Bargmann


Dato : 08-01-01 11:17

Fordi du tæller 1 for langt...

Sådan :
For x := 0 to ListView1.Items.Count - 1 do
.....
.....


"DENNIS LARSEN" <larsen.dennis@get2net.dk> wrote in message
news:g9g66.54$LD5.2065@news.get2net.dk...
> Hvorfor for jeg en adresse fejl som hedder FFFFFF ( kan ikke huske om det
6
> eller 8 F'er ).
>
> Procedure MainForm.button1click(sender ...... );
> Var
> X: Integer;
> BEGIN
> FOR X := 0 TO ListView1.Items.Count DO
> IF ListView1.Items.Item[X].Selected = True THEN
> MainForm.ListView1.Items.Item[X].Delete;
> END;
>
> Og det gir den samme kode hvis der er denne kode:
>
> Procedure MainForm.button1click(sender ...... );
> Var
> X: Integer;
> BEGIN
> FOR X := 0 TO ListView1.Items.Count - 0 DO
> IF ListView1.Items.Item[X].Selected = True THEN
> MainForm.ListView1.Items.Item[X].Delete;
> END;
>
> Hvad går der galt?
>
> --
>
> Hilsen
> Dennis Larsen
>
> ICQ: 65241472
> Hjemmeside: http://hjem.get2net.dk/DennisLarsen
> E-Mail: larsen.dennis@get2net.dk
>
>
>



Hauge (08-01-2001)
Kommentar
Fra : Hauge


Dato : 08-01-01 11:19

Hejsa

"Lars Bargmann" <lars.bargmann@mail.tele.dk> wrote in message
news:93c3st$bqs$1@news.inet.tele.dk...
> Fordi du tæller 1 for langt...

Det er vel ikke nok, for i det samme han sletter en Item, er -1 jo ikke nok.

Mvh Hauge



Lars Bargmann (08-01-2001)
Kommentar
Fra : Lars Bargmann


Dato : 08-01-01 11:47

Det havde jeg ikke lige skænket en tanke...
Der skal jo bare køres en while-løkke, der tjekker på om en index-variabel
er mindre en Count, og index'en skal jo så kun tælles op, hvis man IKKE
sletter....

Idx := 0;
While Idx < ListView.Items.Count do
Begin
If ListView.Items[Idx].Selected then
ListView.Items.Delete(Idx)
Else
Inc(Idx);
End;

Bare et gæt.....
Skrevet ud af den blå luft....


"Hauge" <hauge@CUThrcnet.dk> wrote in message
news:93c7r9.33g.1@CUThrcnet.dk...
> Hejsa
>
> "Lars Bargmann" <lars.bargmann@mail.tele.dk> wrote in message
> news:93c3st$bqs$1@news.inet.tele.dk...
> > Fordi du tæller 1 for langt...
>
> Det er vel ikke nok, for i det samme han sletter en Item, er -1 jo ikke
nok.
>
> Mvh Hauge
>
>



Hauge (08-01-2001)
Kommentar
Fra : Hauge


Dato : 08-01-01 11:14

Hejsa

"DENNIS LARSEN" <larsen.dennis@get2net.dk> wrote in message
news:g9g66.54$LD5.2065@news.get2net.dk...
> Procedure MainForm.button1click(sender ...... );
> Var
> X: Integer;
> BEGIN
> FOR X := 0 TO ListView1.Items.Count DO
> IF ListView1.Items.Item[X].Selected = True THEN
> MainForm.ListView1.Items.Item[X].Delete;
> END;

Umiddelbart er det fordi du bruger .Count som max antal i din tæller, men i
det øgeblik du har slettet en Item, så er der een mindre, og når din X når
til .Count og der er slettet en, er X jo en større end max Item.

Derfor. Håber du forstår.

Procedure MainForm.button1click(sender ...... );
Var
X,Y: Integer;
BEGIN
Y := 0;
FOR X := 0 TO ListView1.Items.Count DO
IF ListView1.Items.Item[X-Y].Selected = True THEN
Begin
MainForm.ListView1.Items.Item[X-Y].Delete;
Inc(Y);
End
END;

Jeg er ikke sikker på at det virker, men noget i den stil.

Mvh Hauge



Hauge (08-01-2001)
Kommentar
Fra : Hauge


Dato : 08-01-01 11:19

Hejsa igen

"Hauge" <hauge@CUThrcnet.dk> wrote in message
news:93c7ho.398.1@CUThrcnet.dk...
> Derfor. Håber du forstår.

Ja udover at din tæller skal være:
FOR X := 0 TO ListView1.Items.Count - 1 DO

Så lav den om til
FOR X := ListView1.Items.Count - 1 DownTo 0 DO

I din oprindelige kode, så får du ikke det problem som jeg skrev.

Mvh Hauge



Jan Pe\"d\"ersen (08-01-2001)
Kommentar
Fra : Jan Pe\"d\"ersen


Dato : 08-01-01 16:57

Hej.

Og den helt rigtige at bruge er SelCount.

"DENNIS LARSEN" <larsen.dennis@get2net.dk> skrev i en meddelelse
news:g9g66.54$LD5.2065@news.get2net.dk...
> Hvorfor for jeg en adresse fejl som hedder FFFFFF ( kan ikke huske om det
6
> eller 8 F'er ).
>
> Procedure MainForm.button1click(sender ...... );
> Var
> X: Integer;
> BEGIN
> FOR X := 0 TO ListView1.Items.Count DO
> IF ListView1.Items.Item[X].Selected = True THEN
> MainForm.ListView1.Items.Item[X].Delete;
> END;
>
> Og det gir den samme kode hvis der er denne kode:
>
> Procedure MainForm.button1click(sender ...... );
> Var
> X: Integer;
> BEGIN
> FOR X := 0 TO ListView1.Items.Count - 0 DO
> IF ListView1.Items.Item[X].Selected = True THEN
> MainForm.ListView1.Items.Item[X].Delete;
> END;
>
> Hvad går der galt?
>
> --
>
> Hilsen
> Dennis Larsen
>
> ICQ: 65241472
> Hjemmeside: http://hjem.get2net.dk/DennisLarsen
> E-Mail: larsen.dennis@get2net.dk
>
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste