![]() |
![]() ![]() ![]() ![]() |
|
Загрузка нескольких RTF файлов в RichEditDelphi , Компоненты и Классы , TMemo и TRichEditАвтор: 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;
Вот перевод текста на русский язык: Инициализация
Форма ( Процедура Button1Click
Эта процедура вызывается, когда кнопка нажата. Она выполняет следующие задачи:
1. Создает объект Загрузка нескольких файлов RTF
Программа использует компонент Конкатенация файлов
Модифицированные строки Загрузка конкатенированного текста в RichEdit1
Наконец, программа загружает конкатенированный текст ( Очистка
Объект В статье описана процедура загрузки нескольких RTF-файлов в компонент RichEdit, при этом файлы объединяются с помощью разделителя. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: TMemo и TRichEdit ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||