Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 22:23   #1
AntiDriver
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 12
По умолчанию Работа с файлами

Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от нуля). Если строки с таким номером нет, то оставить файл без изменений.

Программа с представленным кодом читает информацию из исходного файла и перезаписывает её во временный, но строку с номером k не удаляет (хотя должна по идее). Подскажите, в чём ошибка?

Код:
Uses crt;
Const
   k=5;
   n=250;
Var
   f,g:text;
   S: string;
   i:integer;
 
 
BEGIN
   Clrscr;
   assign(f,'c:\1.txt');
   reset(f);
   assign(g,'c:\1~.tmp');
   rewrite(g);
   i:=0;
   while not EOF(f) do begin
                          while not EOLN(f) do begin
                                                           readln(f,s);
                                                           if i<>k then writeln(g,s);
                                                           inc(i);
                                                       end;
                       end;
   close(f);
   close(g);
END.
AntiDriver вне форума Ответить с цитированием
Старый 05.06.2010, 23:18   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Uses crt;
Var
   f,g:text;
   S: string;
   i,k:integer;


BEGIN
   Clrscr;
   assign(f,'c:\1.txt');
   reset(f);
   assign(g,'c:\2.txt');
   rewrite(g);
   write('Введите номер строки которую нужно удалить: ');
   readln(k);
   i:=1;
   while not EOF(f) do begin
                          while not EOLN(f) do begin
                                                           readln(f,s);
                                                           if i<>k then writeln(g,s);
                                                           inc(i);
                                                       end;
                       end;
   close(f);
   close(g);
   Erase(f);
   Rename(g, '1.txt');
END.
Ну можно вот так переименовыванием временного файла.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 05.06.2010, 23:42   #3
AntiDriver
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 12
По умолчанию

Нет, не помогло.

Вот такая просьба, проверьте у себя работает ли эта программа (удаляет 5ую строчку, считая с 0, из файла c:\1.txt) и отпишитесь об этом.

Код:
 
Const
   k=5;
Var
   f,g:text;
   S: string;
   i:integer;
 
 
BEGIN
   Clrscr;
   assign(f,'c:\1.txt');
   reset(f);
   assign(g,'c:\1~.txt');
   rewrite(g);
   i:=0;
   while not EOF(f) do begin
                                   readln(f,s);
                                   if i<>k then writeln(g,s);
                                   inc(i);
                              end;
   rewrite(f);
   reset(g);
   while not eof(g) do
                      begin
                         readln(g,s);
                         writeln(f,s);
                      end;
  close(f);
  erase(g);
END.
AntiDriver вне форума Ответить с цитированием
Старый 06.06.2010, 00:04   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

а в чём проблема то?
Код:
Const
   k=5;
Var
   f,g:text;
   S: string;
   i:integer;


BEGIN
   assign(f,'c:\ROMA.txt');
   reset(f);
   assign(g,'c:\ROMA2.txt');
   rewrite(g);
   i:=0;
   while not EOF(f) do begin
                                   readln(f,s);
                                   if i<>k then writeln(g,s);
                                   inc(i);
                              end;
   rewrite(f);
   reset(g);
   while not eof(g) do
                      begin
                         readln(g,s);
                         writeln(f,s);
                      end;
  close(f);
  close(g);
  erase(g);
END.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами BloodMaX Помощь студентам 7 11.03.2010 22:03
Работа с файлами good-spamer Помощь студентам 2 17.02.2010 16:38
Работа с файлами Futa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 06.11.2009 17:40
Работа с файлами в си dampirik Помощь студентам 7 04.07.2009 15:41
Работа с файлами Cpluser Общие вопросы C/C++ 2 16.02.2009 23:22