![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Помогите решить следующую проблему:
имеется файл (например file.txt) содержание файла -1 -2 #3 -4 Циклически проверяем каждую строчку файла. Если она равна #3 то заменяем эту строчку на другую например "&3" по окончании процедурки файл должен принять вид -1 -2 &3 -4 Реально ли это сделать если для считывания строк мы используем readln(f,s) Файл file.txt в программе присваивается как текстовый файл assignfile(f,'путь') Выручайте! |
#2
|
||||
|
||||
![]() Можно использовать тип 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
|
|||
|
|||
![]() В общем, совет правильный. За искобчение того, что break не нужен (а вдруг там несколько вхождений, которые надо заменить все).
|
#4
|
|||
|
|||
![]() ![]() вернее можно, но мне нельзя! Так я и сам додумался..не глупый |
#5
|
||||
|
||||
![]() а если так:
Код:
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; |