Консультация № 35770
20.02.2006, 02:25
0.00 руб.
0 6 5
Здравствуйте, Уважаемые эксперты!

Имеется текстовый файл, каждая вторая строка в нем пустая.
Вопрос: как избавиться от пустых строк, чтобы каждая непустая строка становилась на место пустой.

например

Имеется такой файл:

строка 1

строка 2

строка 3

Необходимо получить такой:

строка 1
строка 2
строка 3

Обсуждение

Неизвестный
20.02.2006, 07:05
общий
Только заново записать этот файл. Удалить строки не удастся.
Неизвестный
20.02.2006, 07:06
общий
это ответ
Здравствуйте, Solovej!
Только заново записать этот файл. Удалить строки не удастся.
давно
Мастер-Эксперт
425
4118
20.02.2006, 07:46
общий
это ответ
Здравствуйте, Solovej!
Создаете второй текстовый файл. Потом построчно читаете первый и если строка не пуста, переписываете ее во второй. После окончания переименовать второй файл в первый.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
20.02.2006, 08:59
общий
это ответ

<i>Здравствуйте, <b>Solovej</b>!</i>

Ответ привожу в виде примера с комментариями (см. приложение).

<i>Удачи!</i>

Приложение:
procedure TForm1.Button1Click(Sender: TObject);var File1, File2: TStringList; i, c: Integer;begin File1:= TStringList.Create; File2:= TStringList.Create; try// Читаем файл File1.LoadFromFile(‘test.txt‘);// получаем количество строк в файле c:= Pred(File1.Count);// цикл for i:= 0 to c do begin// если строчка не пустая, if not (Trim(File1[i]) = ‘‘) then// то добавляем новую строку во второй файл File2.Add(File1[i]); end;// сохраняем второй файл File2.SaveToFile(‘test.out.txt‘); finally// освобождаем неиспользуемые объекты FreeAndNil(File1); FreeAndNil(File2); end;end;
Неизвестный
20.02.2006, 23:01
общий
это ответ
Здравствуйте, Solovej!Примерно так
AssignFile(f,fname)
Reset(f);
readln(f,s);
if s<>‘‘ then Memo1.lines.add(s);
CloseFile(f);
Memo1.Lines.save tofile(fname);
Удачи
Неизвестный
23.02.2006, 08:41
общий
это ответ
Здравствуйте, Solovej!
1ый вариант: циклом с некоторой переменной i, которая после каждого считывания строки увеличивается, и, когда i - чётное/нечётное, строка записывается во второй файл, а в противном случае не записывается. Но возможен вариант, когда подряд несколько пустых строк. Для этого лучше воспользоваться вторым вариантом.
2ой вариант: См. код в приложении.

Приложение:
procedure Clear(filename, filename2:string);var f,ff : TextFile; s : string;beginIf FileExists(filename) then begin AssignFile(f, filename); Reset(f); AssignFile(ff,filename2); ReWrite(ff); Repeat ReadLn(f,s); if trim(s) <> ‘‘ then // function Trim(str:string):string; - очищает строку от пробелов в коце и начале строки WriteLn(ff,s); Until EOF(f); CloseFile(f); CloseFile(ff);end;
Форма ответа