Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите сделать правильно.


Автор: Yanis 22.11.2004, 16:56
Попросили сделать задачку (со второго курса). Я взялся посмотреть. Вот сижу и никак немогу сделать перенос грамотное форматирование по абзацам. И я не знаю как сделать лучше (читай - правильно). Надеюсь здесь мне помогут. Вобщем мне хотелось бы посмотреть на ваш вариант программы. Все свои идеи и наработки, ОГРОМНАЯ просьба кидать сюда. Если кому интересно, то я сейчас могу закинуть свой вариант решения, только он корявый.

Задача: Написать программу печати текстового файла с размещением текста по 64 символа в строке с переносом слова на следующую строку, если оно не уместилось. Перед каждым абзацем предусмотреть вставку пустой строки перед каждым абзацем. Абзац - пять пробелов в начале строки. (pascal/delphi console).

Автор: Snowy 22.11.2004, 18:11
Код

program Project1;
{$APPTYPE CONSOLE}

uses
 SysUtils, Classes;

const dx:integer=64;

var
 txt:   TStringList;
 s,p:   string;
 x,r,y: integer;

begin
 txt:=TStringList.Create;
 txt.LoadFromFile('1.txt');
 for y:=0 to txt.Count-1 do
 begin
   x:=1; s:=txt[y];
   while x<Length(s) do
   begin
     p:=copy(s,x,dx); r:=Length(p);
     if r=dx then
       while (p[r]<>' ') and (r>0) do dec(r);
     if r=0 then r:=dx;
     WriteLn(copy(p,1,r));
     inc(x,r);
   end;
   WriteLn;
 end;
end.


Если вывод нужно не на экран, а в файл, то соответсвенно делаем не просто WriteLn, а в файл. При желании можно обойтись и без TStringList, а читать построчно из файла. Но мне лично так удобнее...

Автор: Yanis 22.11.2004, 18:24
Это я сделал. Но немного не так. За алгоритм спасибо. А как сделать что бы по абзацам выводилось?
(см условие задачи)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)