Ok. Hier:
Delphi-Quellcode:
procedure TFloatPoints.Ins(
const Index: integer;
const Value: TFloatPoint);
begin
if (
Index >= 0)
and (
Index <= FCount)
then
begin
if FCount = FCapacity
then
SetCapacity(FCapacity + DeltaCapacity);
if Index < FCount
then
begin
Move(FItems[
Index], FItems[
Index + 1], (FCount -
Index) * SizeOf(TFloatPoint));
FillChar(FItems[
Index], SizeOf(TFloatPoint), 0);
end;
FItems[
Index] := Value;
Inc(FCount);
end;
end;
procedure TFloatPoints.Delete(
const Index: integer);
begin
if (
Index >= 0)
and (
Index < FCount)
then
begin
Dec(FCount);
if Index < FCount
then
begin
Move(FItems[
Index + 1], FItems[
Index], (FCount -
Index) * SizeOf(TFloatPoint));
FillChar(FItems[FCount], SizeOf(TFloatPoint), 0);
end;
FItems[FCount].Clear;
end;
end;
Immer mit einem Move die komplette Liste um eins verschieben? Autsch.
Nimm Dir noch ein Flag Del : boolean;
Und dann wenn Du fertig bist einmal das Array ohne die gelöschten in ein neues kopieren.
Mavarik