Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Teile einer beliebeigen Array lückenlos löschen

  Alt 25. Aug 2015, 11:15

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....

Geändert von Mavarik (25. Aug 2015 um 11:22 Uhr)
  Mit Zitat antworten Zitat