![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Добрый день ! Подскажите пожалуйста такой момент, есть текстовый файл, в нем кол-во строк не постоянное, в него могут вноситься правки, следовательно по номеру строки с начала документа не возможно отследить нужную строку. В конце этого файла, а именно 10 строк с конца документа - не изменные, и внутри этих строк надо изменить определенный символ, например 5 символов от 3-го символа с начала строки №2 от конца документа
![]() С помощью такого кода Код:
procedure TForm1.Button1Click(Sender: TObject); var f: textfile; st: string; begin assignfile(f,'aaa.txt'); reset(f); while not eof(f) do readln(f,st); closefile(f); Label1.Caption:=st; end; я могу считать только последнюю строку, а мне надо считать вторую с низа строку и изменить ее. Подскажите как это сделать? |
#2
|
||||
|
||||
![]() Цитата:
|
#3
|
|||
|
|||
![]() Код для примера можете показать?
|
#4
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; str: String; begin sl := TStringList.Create; try sl.LoadFromFile('Имя файла'); // Читаем текстовый файл if sl.Count >= 2 then // Если в нём не менее двух строк begin str := sl[sl.Count - 2]; // Считываем вторую снизу строку .....; // Производим нужные изменения с этой строкой в переменной str sl[sl.Count - 2] := str; // Записываем назад изменённую строку end; sl.SaveToFile('Имя файла'); // Сохраняем текстовый файл finally sl.Free; end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Ahton (11.04.2014)
|
#5
|
|||
|
|||
![]() Спасибо за код, именно то что надо
![]() можно еще вопрос к вам: Есть 12 файлов в каталоге, имена у всех разные. Как можно изменить значения через stringlist у них так, чтобы в первые 6 файлов добавить одно значение, а в другие 6 - другое? т.к. имена разные и меняются, по имени файла их разделить не получится, надо как то в массиве чтоли... |
#6
|
||||
|
||||
![]() Предположим что в StringList уже находится список из 12-ти имён файлов - 6 верхних одна группа, остальные другая. Тогда
Код:
... for i:= 0 to 11 {StringList.Count-1} do if i <=5 then // или если кол-во файлов не известно то i <= StringList.Count/2 begin s:= StringList.Items[i]; // здесь обработка файлов из первой группы end else begin s:= StringList.Items[i]; // здесь из другой end; ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 15.04.2014 в 05:57. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Ahton (15.04.2014)
|