In einer Initialisierungsroutine würde ich sicherheitshalber
Anzahl_Änderungen := 0;
setzen.
In EingabetextChange passiert z.B.:
Anzahl_Änderungen := 1;
SetLength(Änderungen, 1); => das array hat ein Element, nämlich Änderungen[0]
Änderungen[1] := 'blah'; => Bereichsfehler
IMHO (ungetestet) müssen
- die Zugriffe auf das array korrigiert werden (-1)
- die array-Elemente mit Create erzeugt werden, weil sonst nur ein Pointer auf die Eingabetext.Lines im array steht
Das Ganze passiert bei jedem Tastendruck! Schätze, dass bei einem längeren Text bald mal der Speicher knapp wird. Das array mit z.B. 20 Elementen zu begrenzen, fände ich sinnvoll. Man kann auch überlegen, nur die Differenz zu speichern anstatt des kompletten Textes.