Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Загрузка нескольких RTF файлов в RichEdit

Delphi , Компоненты и Классы , TMemo и TRichEdit

Загрузка нескольких RTF файлов в RichEdit

Автор: McAndrews

//Кидаем на форму RichEdit1, Button1, OpenDialog1
//и по клику кнопки создаём следующую процедуру:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, nFiles: integer;
  FileNames, UnitedText, Separator, Tmp: string;
  TextStream: TStringStream;
begin
  TextStream := TStringStream.Create('');
  Separator := '\par \par \par '; // это разеделитель между выводимыми
  // файлами, в данном случае - 3 параграфа
  UnitedText := '';

  OpenDialog1.Options := OpenDialog1.Options
    // что бы можно было выбрать несколько
  + [ofAllowMultiSelect]; // файлов

  RichEdit1.MaxLength := $7FFFFFF0; // предусмотрительно увеличиваем максимальный
  // объём загружаемых данных в RichEdit1

  try // а вдруг что..

    if OpenDialog1.Execute then
    begin
      nFiles := OpenDialog1.Files.count - 1;
      for i := 0 to nFiles do
      begin

        FileNames := OpenDialog1.Files.Strings[i];
        RichEdit1.Lines.LoadFromFile(FileNames);
        // открываем каждый файл поочереди
        // в RichEdit1
        RichEdit1.Lines.SaveToStream(TextStream);
        // и записываем данные уже от туда в
        // поток TextStream,
        Tmp := TextStream.DataString; // а из потока во временную
        // переменную Tmp типа String,

        TextStream.Position := 0; // ставим указатель в потоке на 0,

        if i = 0 then // проверяем - является ли данный
          Tmp := copy(Tmp, 0, length(Tmp) - 5) // файл первый, последним, или
        else if i = nFiles then // или между ними, в зависимости
          Tmp := Separator + copy(Tmp, 2, length(Tmp))
            // от этого удаляем управляющие
        else // символы начала или окончания
          Tmp := Separator + copy(Tmp, 2, length(Tmp) - 5);
            //  RTF-файла и всталяем разделитель.
        // дело в том, что каждый RTF-файл
        // начинаетcz c символа '{' и заканчивается '}'.
        UnitedText := UnitedText + Tmp; // записываем всё в переменную UnitedText
      end;

      TextStream.WriteString(UnitedText);
      // помещаем уже объеденённый текст в поток

      TextStream.Position := 0; // ставим указатель на 0
      RichEdit1.Lines.LoadFromStream(TextStream);
      // и записываем потом в RichEdit1
    end;
  finally
    TextStream.Free;
  end;
end;

Вот перевод текста на русский язык:

Инициализация Форма (TForm1) инициализируется тремя компонентами: RichEdit1, Button1 и OpenDialog1. Кнопка настроена для вызова процедуры Button1Click при клике.

Процедура Button1Click Эта процедура вызывается, когда кнопка нажата. Она выполняет следующие задачи: 1. Создает объект TStringStream, TextStream, который будет использоваться для конкатенации содержимого нескольких файлов RTF. 2. Устанавливает строку-разделитель (Separator), которая будет использоваться для разделения содержимого каждого файла. В этом случае это три пустых строки ('\par \par \par '), которые будут вставлены между файлами. 3. Инициализирует пустую строковую переменную UnitedText, которая будет хранить конкатенированное содержимое RTF.

Загрузка нескольких файлов RTF Программа использует компонент OpenDialog1 для выбора нескольких файлов RTF. Свойство Options настроено для разрешения выбора нескольких файлов (ofAllowMultiSelect). Метод Execute вызывается для открытия диалога выбора файлов, и если успешно, то получает массив имён файлов с помощью свойства Files.Strings. Затем программа проходит по каждому выбранному файлу: 1. Загружает содержимое каждого файла в контрол RichEdit1 с помощью метода Lines.LoadFromFile. 2. Сохраняет содержимое контрола RichEdit1 в объект TextStream с помощью метода Lines.SaveToStream. 3. Извлекает содержимое RTF из объекта TextStream и хранит его в временной строковой переменной Tmp. 4. Модифицирует строку Tmp, удаляя заголовок файла RTF ({) и подножку (}), если это не первый или последний файл, и вставляет строку-разделитель вместо них.

Конкатенация файлов Модифицированные строки Tmp конкатенируются в переменной UnitedText с помощью оператора +. Результатом является строка, содержащая все содержимое выбранных файлов RTF, разделенных строкой-разделителем.

Загрузка конкатенированного текста в RichEdit1 Наконец, программа загружает конкатенированный текст (UnitedText) в контрол RichEdit1 с помощью метода Lines.LoadFromStream.

Очистка Объект TextStream освобождается для предотвращения утечек памяти. В целом, это код демонстрирует, как загружать несколько файлов RTF в одиночный контрол TRichEdit и конкатенировать их содержимое.

В статье описана процедура загрузки нескольких RTF-файлов в компонент RichEdit, при этом файлы объединяются с помощью разделителя.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TMemo и TRichEdit ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-06-14 06:37:48/0.0035829544067383/0