Ну, мужики, вы даете.
Кто же в цикле "for" удаляет. Тут хоть 'to', хоть 'downto', результат будет один: либо "Rang check error", либо "Access violation...".
	Код:
	var 
  SomeFile:TStringList;
  i:Integer;
begin
  SomeFile:=TStringList.Create;
  SomeFile.LoadFromFile('SomeFile');
  I := SomeFile.IndexOf('Data3')
  if I >= 0 then
    SomeFile.Items.Delete(I);
  SomeFile.SaveToFile('SomeFile');
  SomeFile.Free;  
end; 
 
И в файл обратно не надо забывать записывать модифицированные данные.