Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > конец абзаца


Автор: Алкоголик 6.8.2009, 18:43
Здраствуйте.
Наверное сегодня у меня совсем мозг не работает, но не могу решить такую тривиальную задачу.
Есть текстовый файл нужно отсчитать 4000 символов и найти конец абзаца. Делаю так:
Код

var
  str:string;
  i,kolvo:integer;
  f: TextFile;
begin
  kolvo:=0;
  AssignFile(f, edit1.text);
  Reset(f);
  while not EOF (f) do begin
    readln (f, str);
    kolvo:=kolvo+length(str);
    if kolvo>4000 then begin
      for I := 1 to Length(str) do begin
         if str[i]=#13 then
            Showmessage(str);

      end;
    end;
  end;



Выдает ошибку код..
Помогите...


Автор: Keeper89 6.8.2009, 19:16
Что-то я не понял... Надо скачать определенно 4000 символов или как попадется, а в том что попадется найти конец абзаца?

Автор: Алкоголик 6.8.2009, 19:31
Отсчитываем от начала 4000 символов и начинаем искать конец абзаца.

Добавлено через 1 минуту и 40 секунд
Вообщем впринципе кол-во символов не важно, нужно найти конец абзаца

Автор: Snowy 7.8.2009, 12:21
Код
function GetNStr(FileName: string; kolsim: integer): string;
{* FileName - имя файла
   kolsim - количество символов *}
var
  fs: TFileStream;
  i:  Integer;
begin
  Result := '';
  try
    fs := TFileStream.Create(FileName, fmOpenRead and fmShareDenyWrite);
    if fs.Size < kolsim then kolsim := fs.Size;
    SetLength(Result, kolsim);
    fs.Read(Result[1], kolsim);
    i := LastDelimiter(#13, Result);
    if i > 0 then Result := Copy(Result, 1, i-1);
  finally
    fs.Free;
  end;
end;

Автор: Алкоголик 7.8.2009, 19:39
Snowy, спасибо.

Но меня зантересовал такой вопрос: если считывать файл паскалевским методом, то символ конец абзаца(#13) не считывается?

Автор: Snowy 10.8.2009, 14:59
Для ReadLn #13-й символ является разделителем.
По нему он нарезает строки.
Сам символ не читает, т.к. для него он служебный.
Да и смысла нет - эти функции давно устарели и имеются в наличии только для совместимости со старым кодом.

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