Du kannst in einer Stringliste (Memo.Lines) nicht einfach etwas in die i.te Zeile schreiben. Statt
Memo.Lines[x] := Foo;
Müsstest Du
Delphi-Quellcode:
Procedure AddOrAppend (aLines : TStrings; Const anIndex : Cardinal; aLine : String);
Begin
While aLines.Count >= anIndex Do aLines.Add('');
aLines[anIndex] := aLine;
End;
...
AddOrAppend(Memo.Lines,x,Foo);
...
schreiben.
Ab Delphi 2005(?) kannst Du die Funktionalität mit einem Class Helper an die TStrings kleben, was
OOP-mäßig besser ist.