Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

Re: Was macht Free genau in einem Array

  Alt 9. Dez 2005, 08:59
Zitat von s.h.a.r.k:
Vielleicht habe ich mich etwas kompliziert ausgedrückt: Und zwar wie schon gesagt habe ich ein Array der Länge 10 und lösche nun z.B. das Fünfte über eine Procedure Delete, die wie folgt aussieht:

Delphi-Quellcode:
procedure TMyClass.Delete(Index: Integer);
var
  i : Integer;
begin
  MyArray[Index].Free;
  for i := Index to length(MyArray) - 2 do MyArray[i] := MyArray[i + 1];
  setlength(MyArray, length(MyArray) - 1);
end;
Nun ist es allerdings so, dass das Free schon eine Dekrementierung des Arrays bewirkt, was ich allerdings nicht wirklich verstehe...

PS: Sicherheitsabfragen bei der Procedure habe ich weggelassen.
Beim löschen eines Feldes Deines Arrays solltest du die schleife auf jeden Fall rückwärts(downto) laufen lassen.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat