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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 14:09   #1
giv93
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 13
По умолчанию Pascal (работа с текстовыми файлами)

Нужно разработать процедуру, которая считывает с текстового файла знаки до первой точки и образует новый файл по 40 знаков в строке.

У меня процедура в новый файл записывает по 40 символов только ту строку, в которой стоит точка. Например в исходном файле:
"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj jjjjjjjjjjjjjjjjjj
dddddddddddddssssssssssss.csdcsdcjn bdsjkcb"

в новый файл процедура записывает только dddddddddddddssssssssssss, а первую строку нет...почему???


Код:
Program lab1;
uses crt;
type
let=text;
var
  fileN1,fileN2:string;
  f1:let;
  f2:let;

procedure readh(var fileN1, fileN2:string);
var
  c:string;
  f1:let;
  f2:let;
  i,j:integer;
begin
  assign(f1,filen1);
  assign(f2,filen2);
  reset(f1);
    while not eof(f1) do
     begin
      readln(f1,c);
       for i:=1 to length(c) do
         begin
           if (c[i]='.') then
             begin
                delete(c, i, length(c)-1);
             end;
         end;
     end;

    close(f1);
    writeln(c);
    writeln(c);


  rewrite(f2);
    j:=1;
    repeat
       write(f2,c[j]);
       if (j mod 40 =0) then
         begin
           writeln;
         end;
       j:=j+1;
    until j=length(c) ;
   close(f2);

end;


begin
filen1:='d://n1.dat';
filen2:='d://n2.dat';
readh(fileN1, fileN2);
end.
giv93 вне форума Ответить с цитированием
Старый 14.02.2012, 21:12   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Я бы сначала выделил строку, что идет до точки:
Код:
newStr:=copy(str, 0, pos('.', str));
а после по 40 символов разбивать на строки:
Код:
while(length(newStr) > 40) do begin
write(f2, copy(newStr, 0, 40));
delete(newStr, 0, 40);
end;
Не проверял, но должно работать.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами Pascal decantnik Помощь студентам 2 05.03.2011 16:49
Работа с текстовыми файлами.Pascal valis Помощь студентам 5 29.03.2010 17:59
Работа с текстовыми файлами в ЯП Turbo Pascal JayDe23 Паскаль, Turbo Pascal, PascalABC.NET 0 04.06.2009 19:50
Pascal работа с текстовыми файлами Andrey89 Помощь студентам 3 25.12.2007 19:21