Delphi-Quellcode:
procedure CutArray(Start,Finish:integer; var Arr:array of TObject);
var
a1:word;
begin
if Start>Finish then Change(Start,Finish); //Change tauscht einfach die beiden Zahlen
for a1:=Finish to High(Arr) do Arr[Start+a1]:=Arr[Finish+a1];
SetLength(Arr, High(Arr)-(Finish-Start)+1);
end;
Also
if Start>Finish then Change(Start,Finish);
Ich glaube das ist das letzte was ich abgetestet hätte... Dann schon eher die Arraygrenzen...
Klar kann man auch mit Start, Finish arbeiten aber ich hätte eher Start und Count genommen... Aber das ist Geschmacksache
Delphi-Quellcode:
for a1:=Finish to High(Arr) do
Arr[Start+a1]:=Arr[Finish+a1];
Starten bei Finish? das ist doch das letzte Element welches Du löschen willst...
Arr[Start+A1]:=
ist das Element das Anzahl(Start) Felder hinter deinem Finish liegt...
:= Arr[Finish+A1]
ist 2xFinish sicherlich auch nicht richtig.
SetLength(Arr, High(Arr)-(Finish-Start)+1);
High ist das letzte Element was Du suchst ist
length(Arr)
Am besten löschen und nochmal nach einem Kaffee neu überlegen.
Du willst ja die Element nach vorne verschieben...
1 2 3 4 5 6 7 8 9
Cutarray(4,5,arr)
1 2 3 6 7 8 9
also must die 6 an die Stelle von 4, 7 an 5 usw.
Was ist aber mit
Curarray(2,8,arr)
Ich würde sagen, da muss noch ein If in die For-Schleife....