если не выполнилось первое условие, а StringList.Count==0, то при выполнении вставки в первую (или вторую) строку и вызывается ошибка.
может так лучше будет
Код:
procedure TForm4.Button1Click(Sender: TObject);
begin
tar:=TStringList.Create;
tar.Clear;
if (LabeledEdit1.Text<>'') then tar.Insert((tar.Count-1),LabeledEdit1.Text);
if (LabeledEdit2.Text<>'') then tar.Insert((tar.Count-1),LabeledEdit2.Text);
if (LabeledEdit3.Text<>'') then tar.Insert((tar.Count-1),LabeledEdit3.Text);
tar.SaveToFile('Settings\Tarif.cfg');
//tar.Free;
end;
и сделайте ts:TStringList локальной, все равно создаете и удаляете (не всегда) при каждом нажатии кнопки, тогда и с Free вопрос разрешится