Здравствуйте, CR-LF, Вы писали:
CL>Прошу прощения — я немного сократил оригинальный текст, а в результате
CL>получилась глупость.
CL>Более полный (но все еще не совсем оригинальный) вариант выглядел так
CL>CL>procedure TQForm.SaveToDo;
CL>var
CL> Tsk: TTask;
CL>begin
CL> if Edit1.Text <> '' then begin
CL> Tsk := TTask.Create(Edit1.Text);
CL> if not AddTodoTask(Tsk) then Tsk.Free;
CL> end;
CL> if Edit2.Text <> '' then begin
CL> Tsk := TTask.Create(Edit2.Text);
CL> if not AddTodoTask(Tsk) then Tsk.Free;
CL> end;
CL> if Edit3.Text <> '' then begin
CL> Tsk := TTask.Create(Edit3.Text);
CL> if not AddTodoTask(Tsk) then Tsk.Free;
CL> end;
CL> if Edit4.Text <> '' then begin
CL> Tsk := TTask.Create(Edit4.Text);
CL> if not AddTodoTask(Tsk) then Tsk.Free;
CL> end;
CL>end;
CL>
Так это уже другое дело

Как-минимум, напрашивается перемещение дублирующегося кода в отдельный метод, например, все проверки выполнять в процедуре AddTodoTask:
procedure AddToDoTask (AText: string);
var
ATask: TTask;
begin
if AText = '' then
Exit;
// тут сделать еще проверки предусловий, при необходимости
// ....
// создаем экземпляр задания
ATask := TTask.Create (AText);
// тут выполнить добавление в задания
// ....
end;
Дальнейшее сводится к вариациям такого плана:
AddToDoTask (Edit1.Text);
AddToDoTask (Edit2.Text);
...
или просто к проходу по циклу этих TEdit'ов, заранее сформированному.
Конечно, если бы был приведен реальный код, то можно было бы еще что-то посоветовать, пока же мне видится именно такое