![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
В этом то и проблема что через Tstringlist нельзя..вернее можно, но мне нельзя! Так я и сам додумался..не глупый |
|
#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; |