Текстовый файл. Что я делаю не так?

Здравствуйте. У меня вот такой код, который должен записывать строку в текстовый файл:
var
S : TStrings;
begin
S := TStringList.Create();
S.LoadFromFile('Filename.txt');
S.Strings[1] := 'Test';
S.Add('Test');
S.SaveToFile('Filename.txt');
S.Free;
end;
Однако, когда я пытаюсь этот код запустить, вылетает следующее сообщение об ошибке:
List index out of bounds(1)
Вопрос: что я делаю не так?
9 ответов

S.Strings[1] := 'Test'; заменяет содержимое второй строки. Если строк меньше 2-х, то и будет List index out of bounds(1)


Filename.txt - должен быть хотя бы из 2 строк. Нумерация строк в TStringList начинается с нуля, т.е. заменяя верхнюю строку нужно
S.Strings[0] := 'Test';


S.Strings[0] := 'Test'; - тоже возможна ошибка, если изначально файл пустой (имеет нулевую длину). Лучше Add('Test'); Предварительно удалить все строки, если нужно


S.Strings[0] := 'Test'; - тоже возможна ошибка
Конечно возможна, причем та же как у ТС в пером посте, но я же написал что бы не допускали загрузки из пустого файла, тогда все будет нормально.


Спасибо, разобралась, надо было просто в текстовом файле создать строки. А вот еще проблема: Вот этот код, должен записывать значение переменной в текстовый файл:
var
F : TStrings;
begin
IndStr := IndStr + 1;{IndStr и IndKey это глобальные переменные, объявленные в разделе public}
F := TStringList.Create();
F.LoadFromFile('Prey.txt');
F.Strings[IndStr] := IndKey;
F.Add(IndKey);
F.SaveToFile('Prey.txt');
F.Free;
end;
Однако, когда я его запускаю, ничего не происходит. Что я делаю не так?


скорее всего происходит. только файл Prey.txt находится там, где находится рабочий каталог программы, а не там, где Вы его ожидаете увидеть. Используйте ПОЛНЫЙ путь к тестовому файлу...


Prey может создатся не только в рабочем котологе(полный путь до него: ExtractFilePath(ParamStr(0)), а даже в папке Windows , лучше использовать полный путь.


может создатся не только в рабочем котологе(полный путь до него: ExtractFilePath(ParamStr(0))
Каталог екзешника далеко не всегда рабочий


скорее всего происходит. только файл Prey.txt находится там, где находится рабочий каталог программы, а не там, где Вы его ожидаете увидеть. Используйте ПОЛНЫЙ путь к тестовому файлу...
Prey может создатся не только в рабочем котологе(полный путь до него: ExtractFilePath(ParamStr(0)), а даже в папке Windows , лучше использовать полный путь.
Текстовый файл у меня лежит в одном каталоге с проектом Delphi, там же, куда сохраняется и .exe при компилировании. Я так уже делала и все работало, так что дело не в этом.