Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Eintrag aus Array löschen funktioniert bei 64 bit nicht

  Alt 9. Feb 2019, 18:34
Ich benutze seit einer Ewigkeit diesen Codeschnipsel und er funktioniert mit x86.
Mit x64 funktioniert er genau 2x und dann bekomme ich eine ungültige Zeigeroperation. Der Input ist immer der gleiche. Ein String mit mehreren Teilen geteilt durch |, die ich mit Explode in ein Array packe. Das klappt alles bis ich den ersten Eintrag löschen möchte. Dann kommt der Fehler.

Delphi-Quellcode:
procedure DeleteArrayIndex(var AArray: TArray<string>; AIndex: Integer);
begin
 if AIndex > High(AArray) then
  Exit;
 if AIndex < Low(AArray) then
  Exit;
 if AIndex = High(AArray) then
  begin
   SetLength(AArray, Length(AArray) - 1);
   Exit;
  end;
 Finalize(AArray[AIndex]);
 System.Move(AArray[AIndex + 1], AArray[AIndex], (Length(AArray) - AIndex - 1) * SizeOf(string) + 1);
 SetLength(AArray, Length(AArray) - 1);
end;

if StringParts[0] = 'HEADERthen
 DeleteArrayIndex(StringParts, 0); // Fehler
Das Array ist immer mindestens 3 Einträge lang.
  Mit Zitat antworten Zitat