Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Move und FillChar bei strings.

  Alt 9. Jun 2014, 11:02
Delete:
Erst Freigeben (Finalize), und zwar das, was du löschst.
dann verschieben, was vor muß und das, was verschoben, aber nicht gelöscht wurde, leeren FillChar, sonst ist der Eintrag doppelt da und du hast somit die Referenzzählung zerschossen.
Oder das erst den zu Löschenden zuwischenspeichern (Move in ine Tempvariable), dann verschieben und den zu löschenden an letzter Stelle einfügen (Movo) und die TempVariable natürlich, wenn man dafür den OriginalTyp verwendete, ebenfalls Nullen, da dieses sonst auch doppelt ist.

Genauso beim Insert.


Fazit: Erst lernen wie eigentlich die Speicherverwaltung funktioniert und dann sich an soein Projekt rantrauen.

Oder du fummelst besser nicht an der Speicherverwaltung rum
Delphi-Quellcode:
procedure ArrayDelete(var Arr: TMyArray; Index: Integer);
var
  i: Integer;
begin
  for i := Index to High(Arr) - 1 do
    Arr[i] := Arr[i + 1];
  SetLength(Arr, Length(Arr) - 1);
end;
Oder du nutzt fertige Codes, welche sich darum kümmern, wie z.B. die generische TList<>.
$2B or not $2B
  Mit Zitat antworten Zitat