Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
10. Mai 2020
Das ist tatsächlich so. Es ist aber kein Copy-Paste Error. Interessanterweise führt ein Lenght(A) - 1 zu einem falschen Ergebnis! Ursache ist das intern aufgerufene _DynArrayInsertElem. Da wird zunächst das Array verschoben, um am Anfang Platz zu schaffen. Dadurch schiebt sich das letzte Array-Element genau unter den von A angegebenen Speicherbereich.
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
9. Mai 2020
Da die Strings selbst auch nur als Pointer in den Array-Elementen vorliegen, ergibt sich m.E. hier kein nennenswerter Vorteil.
Ich kann auch mit folgendem Code keinen Fehler feststellen (getestet in 10.3.3):
procedure RotateRight(var A: TArray<String>);
begin
Insert(A, A, 0);
Delete(A, High(A), 1);
end;
procedure RotateLeft(var A: TArray<String>);
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
8. Mai 2020
Ist halt nicht so einfach auf variable Arraylängen anpassbar.