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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2012, 00:44   #1
Rediska512
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 16
По умолчанию Текстовый файл

Задание
Создать текстовый файл. Переписать в другой файл строчки длина которых больше 30 символов

я написал прогу, создание-вывод файла работает, вот только новый файл пустой помогите плз
Код:
program text_file;
uses crt;
var
   name:string;
   f:text;
   k:integer;
procedure stvor(var f:text);
 var x:char;
begin
 checkeof:=true;
 rewrite(f);
 writeln('Vvedit file,kinec ctrl+z');
 while not eof do
 begin
    read(x);
    write(f,x);
 end;
 close(f);
 reset(input);
end;

procedure vuvod(var f:text);
var y:char;
begin
 reset(f);
 while not eof(f) do
 begin
    read(f,y);
    write(y,'');
 end;
 close(f);
end;

procedure obrobka(var f:text; n:string);
var f1:text; a:char; s:string;
begin
   assign(f1,name);
   reset(f);
   rewrite(f1);
   s:='';
   while not eof(f) do
   begin
      while not eoln(f) do
      begin
        read(f,a);
        s:=concat(s,a);
      end;
      if length(s)>30 then write(f1,s);
      s:='';
   end;
   close(f);
   clrscr;
   close(f1);
   vuvod(f1);
end;

BEGIN
clrscr;
writeln('name file:');
readln(name);
writeln('Vvedit name drygogo file');
readln(name);
assign(f,name);
stvor(f);
writeln('Vu vveli fail:');
vuvod(f);
readln;
obrobka(f,name);
readln;
end.
только что увидел что намутил со связкой имени второго файла изменил и программа вообще не работала, помогите кто знает пожалуйста
Rediska512 вне форума Ответить с цитированием
Старый 16.04.2012, 01:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
writeln('name file:');
readln(name);
writeln('Vvedit name drygogo file');
readln(name);
Да это ты лучше в разные переменки вводи
Цитата:
reset(f);
rewrite(f1);
Reset убери

И в конце программы ставь close() для закрытия обеих файлов, ато они могут кешироваться, и если не закроешь все твои потуги пропадут даром.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2012, 20:16   #3
Rediska512
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 16
По умолчанию

ну так я говорю когда вторую переменую для нейм сделал то программа вообще не работала -_-
Rediska512 вне форума Ответить с цитированием
Старый 18.04.2012, 00:14   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ну так я говорю когда вторую переменую для нейм сделал то программа вообще не работала -_-
во-первых, имена файлов ДОЛЖНЫ хранится в РАЗНЫХ переменных!
во-вторых, файловых переменных (раз уж вы одновременно с ними работаете) должно быть ТОЖЕ ДВЕ!

в-третьих, программа и процедуры написаны, на мой взгляд, КРАЙНЕ БЕЗАЛАБЕРНО!

проще переписать, чем исправлять ваше. вот, так, например:
Код:
program text_file;
uses crt;
var
  name1, name2 :string;

procedure stvor(const fname : string);
var 
  f:text;
  s:string;
begin
 assign(f, fname);
 rewrite(f);
 writeln('Vvedit file,konec PUSTAY stroka:');
 repeat
    readln(s);
    writeln(f,s);
 until s='';
 close(f);
end;

procedure vuvod(const fname : string);
var 
  f:text;
  y:char;
begin
 assign(f, fname);
 reset(f);
 while not eof(f) do
 begin
    read(f,y);
    write(y,'');
 end;
 close(f);
end;

procedure obrobka(const fname1, fname2 : string; StrLimit : integer);
var 
  f1,f2:text; 
  s:string;
begin
   assign(f1,fname1);
   reset(f1);
   assign(f2,fname2);
   rewrite(f2);
   while not eof(f1) do
   begin
     readln(f1,s);
     if length(s)>StrLimit then writeln(f2,s);
   end;
   close(f1);
   close(f2);
end;

BEGIN
  clrscr;
  writeln('name file:');
  readln(name1);
  writeln('Vvedit name drygogo file');
  readln(name2);
  stvor(name1);
  writeln('Vu vveli fail:');
  vuvod(name1);
  Writeln;
  Writeln;
  Write('Nazmite Enter dlya prodoljenia...');
  readln;
  obrobka(name1, name2, 30);
  writeln('Poluchennyj fail:');
  vuvod(name2);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные числ Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 3 29.02.2012 17:30
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 2 08.02.2012 19:23
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Текстовый файл _Smoke_ Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2009 13:25
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55