Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.01.2009, 01:13
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию Замена строки в файле

Помогите решить следующую проблему:

имеется файл (например file.txt)
содержание файла
-1
-2
#3
-4

Циклически проверяем каждую строчку файла. Если она равна #3 то заменяем эту строчку на другую например "&3"

по окончании процедурки файл должен принять вид

-1
-2
&3
-4

Реально ли это сделать если для считывания строк мы используем
readln(f,s)

Файл file.txt в программе присваивается как текстовый файл
assignfile(f,'путь')

Выручайте!
Ответить с цитированием
  #2  
Старый 29.01.2009, 19:32
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Можно использовать тип TStrings:
Код:
procedure gg;
var
  List: TStrings;
  i: Integer;
begin
  List:= TStringList.Create;
  try
    List.LoadFromFile('file.txt');
    for i:= 0 to List.Count - 1 do
    begin
      if List.Strings[i] = '#3' then
      begin
        List.Strings[i]:= '&3';
        break;
      end;
    end;
    List.SaveToFile('file.txt');
  finally
    List.Free;
  end;
end;
Ответить с цитированием
  #3  
Старый 29.01.2009, 19:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В общем, совет правильный. За искобчение того, что break не нужен (а вдруг там несколько вхождений, которые надо заменить все).
Ответить с цитированием
  #4  
Старый 31.01.2009, 20:08
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

В этом то и проблема что через Tstringlist нельзя..

вернее можно, но мне нельзя!

Так я и сам додумался..не глупый
Ответить с цитированием
  #5  
Старый 01.02.2009, 07:06
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

а если так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  myFile: TextFile;
  s, buf: string;
begin
  AssignFile(myFile, 'file.txt');
  Reset(myFile);
  while not eof(myFile) do
  begin
    Readln(myFile, s);
    if s = '#3' then s:= '&3';
    buf:= buf + s + #13#10;
  end;
  CloseFile(myFile);
  Rewrite(myFile);
  Writeln(myFile, buf);
  CloseFile(myFile);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025