Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Arrays mittels Move( ) verkleinern

  Alt 9. Feb 2013, 15:01
Doch geht schon, auch ohne Speicherlöcher:

Delphi-Quellcode:
procedure RemoveFromMyRecord(Index: Integer);
var
  Len: Integer;
begin
  Len := High(MyRecord);
  if Index <= Len then
  begin
    Finalize(MyRecord[Index], 1);
    if Index < Len then
    begin
      Move(MyRecord[Index + 1], MyRecord[Index], (Len - Index) * SizeOf(TRecord));
      FillChar(MyRecord[Len], SizeOf(TRecord), 0);
    end;
    SetLength(MyRecord, Len);
  end;
end;

procedure RemoveFromMyMatrix(Index: Integer);
var
  Len: Integer;
begin
  Len := High(MyMatrix);
  if Index <= Len then
  begin
    Finalize(MyMatrix[Index], 1);
    if Index < Len then
    begin
      Move(MyMatrix[Index + 1], MyMatrix[Index], (Len - Index) * SizeOf(string));
      FillChar(MyMatrix[Len], SizeOf(string), 0);
    end;
    SetLength(MyMatrix, Len);
  end;
end;
  Mit Zitat antworten Zitat