![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||