![]() |
Warum werden zwei elemente gelöscht ?
Hallo,
Code:
ich dachte mir: das ich einfach von index bis array größe gehe und dabei alle elemente um eins nach vorne schiebe und anschließend denn array verkleiner, das geht auch, nur werden, dann immer zwei elemente gelöscht und ich weiß nicht warum !!!
var
i:Integer; begin if HIGH(ball) -1 > 0 then begin for i:=Index to HIGH(BALL) do BALL[i]:=BALL[i+1]; SetLength(BALL,high(ball)-1 ); end; |
Re: Warum werden zwei elemente gelöscht ?
So sollte es gehen:
Delphi-Quellcode:
High ergibt bereits das letzte Element!
var
i:Integer; begin if HIGH(ball) -1 > 0 then begin for i:=Index to HIGH(BALL)-1 do BALL[i]:=BALL[i+1]; SetLength(BALL,high(ball)); end; |
Re: Warum werden zwei elemente gelöscht ?
Lass uns mal zusammen überlegen. Also nehmen wir an, wir haben 10 Elemente (0 - 9). High gibt jetzt als Index für dich 9 zurück, weil das das letzte Element ist. length hingeben gibt die tatsächliche Anzahl der Elemente zurück, also hier 10. Ich meine du müsstest was mit length basteln. Oder du lässt bei SetLength das -1 weg, dann sollte es auch gehen. Ich persönlich verwende lieber length, da ich mir da etwas sicherer bin, was ich zurückbekomme.
|
Re: Warum werden zwei elemente gelöscht ?
hi,
versuchs mal mit setlength(ball,length(ball)-1); huch war wieder zu langsam :) |
Re: Warum werden zwei elemente gelöscht ?
vieln Dank, daran hast gelegen....
|
Re: Warum werden zwei elemente gelöscht ?
Und vergiss nicht die Schleife um eins zu vermindern, Du bekommst sonst irgendwann sporadische Zugriffsverletzungen, da Du mit einem Element arbeitestet, was ausserhalb des Arrays liegt.
|
Re: Warum werden zwei elemente gelöscht ?
danke....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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