Цитата:
Сообщение от Guerron
Здесь хотел, чтобы все имеющиеся строки (ну или первые 15) были удалены вне зависимости от их содержания
|
Тут есть два момента:
1) Индексация в TStrings (а именно такой тип имеет свойство Lines у компонента Memo) начинается с 0 а не с 1.
2) При таком удалении Вы рискуете получить ошибку, если строк в Lines меньше 29ти. Дело в том, что при каждой команде Memo1.Lines.Delete(m);
Вы удаляете строку с номером m. Последней Вы удаляете 15ю строку, а до нее удалили уже 14ть. Таким образом, до начала удаления у вас должно быть минимум 29ть строк, чтобы после удаления 14ти из них, 15я строка все же существовала и ее можно было удалить. Надеюсь я вас не запутал.
Другими словами, удаление чего бы то ни было с помощью - плохая идея
удалять следует, хотя бы так
А лучше вообще с помощью while.
Получается нужно удалить первые 15ть строк, а остальные, если такие есть, сохранить?
Тогда как-то так
Код:
var
StringsToDeleteCount: integer;
begin
if Memo1.Lines.Count > 15
then StringsToDeleteCount = 15
else StringsToDeleteCount = Memo1.Lines.Count;
for m:=StringsToDeleteCount -1 downto 0 do
Memo1.Lines.Delete(m);
Если же цель - просто очистить мемо, то лучше использовать