Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Eintrag aus Array löschen funktioniert bei 64 bit nicht

  Alt 13. Feb 2019, 09:56
So würde es funktionieren:
Delphi-Quellcode:
 Finalize(AArray[AIndex]);
 System.Move(AArray[AIndex + 1], AArray[AIndex], (Length(AArray) - AIndex - 1) * SizeOf(string));
 {letzten Eintrag auf nil setzen, damit keine Referenzzählung für den jetzt doppelten Eintrag bei SetLength erfolgt}
 System.FillChar(AArray[Length(AArray) - 1], SizeOf(string), 0); // oder Pointer(AArray[Length(AArray) - 1]) := nil;
 SetLength(AArray, Length(AArray) - 1);
Inzwischen ist das wie beschrieben einfacher zu lösen:
Delphi-Quellcode:
System.Delete(AArray, AIndex, 1);
.
  Mit Zitat antworten Zitat