Показать сообщение отдельно
Старый 06.06.2010, 09:39   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tanusha Посмотреть сообщение
Здравствуйте уважаемые обитатели форума!

нужно вставить #10 (конец строки) через каждые 150 символов в нетипизированный файл.
если встречается #13 (enter), то далее отсчет символов начинать заново.
причем слова в тексте не должны разрываться, т.е. вставку делать перед следующим пробелом

кое-что нашла
Уважаемая Танюша, прежде всего позволю себе дать Вам один совет. Осваивая программирование, старайтесь решать задачи самостоятельно, а не шарить по всяким помойкам в поисках "кое-чего". Взять хотя бы приведенный Вами листинг. Да он просто изобилует ошибками и неряшливостями! Начнем с начала:
Код:
f: file;
f2:file;
j,n:integer;
s:string
Для данной задачи следует использовать тип файла TEXT.
Идем дальше:
Код:
assign(f, text.txt);
reset(f);
assign(f2, file1.txt);
rewrite(f2);
Не пойдет! Параметром функции Assign является СТРОКОВАЯ переменная (полное, включая путь, имя файла), поэтому надо либо ввести такие переменные и присвоить им значения путей, например
Код:
var
 st:String;
begin
 st:='D:\text.txt';
 Assign(f, st);
end;
либо, если имя файла указывается явно, по крайней мере взять его в кавычки:
Код:
assign(f, 'text.txt');
Далее:
Код:
for j:=n+150 to n+1 do
Абсолютно бессмысленная запись, потому что при любом n справедливо условие n+150>n+1, следовательно цикл выполняться не будет (для нисходящих значений переменной цикла используется downto, но здесь это ни к селу, ни к городу).
Можно и дальше продолжать, но, я полагаю, достаточно.
Мне кажется, что программа должна выглядеть как-то так:
Код:
var
 f,f2: TEXT;
 n:Byte;
 s:string;

begin
 assign(f, 'D:\text.txt');
 reset(f);
 assign(f2, 'D:\file1.txt');
 rewrite(f2);

 Repeat
  ReadLn(f,s);
  If Length(s)>150 then
   begin
    n:=150;
    Repeat
     Inc(n);
    Until (s[n]=' ') or (s[n]=#13);
    If s[n]=' ' then  insert(#10,s,n);
   end;
  WriteLn(f2,s);
 Until EoF(f);
 close(f);
 close(f2);
end.
Попробуйте - если что-то не так, поправьте сами или напишите сюда.
Да, естественно, пути к файлам поставьте свои.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070