![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разбор текста с "тегами" и вывод его на RichEdit [D7, XP]
Kostya2x © (2007-09-30 16:48:00)Здравствуйте!
Мне необходимо сделать такую вещь... Есть файл с текстом типа
~b~The some bold text~ normal text ~u~underline text~
~bu~bold underline text~
Надо считать его, обработать "теги" и вывести текст на RichEdit
в соответствии с ними.
Сколько я не бился, у меня почему-то получается зависание. :-)
У кого-нибудь есть примеры того, как можно сделать подобное? "Теги"
могут быть и другими, это не принципиально.
Kostya2x (2007-09-30 21:14:00) [1]Вот код. Сильно не бейте меня по разным частям тела за него. :)
const
CR = ^M;
LF = ^J;
var
MainForm: TMainForm;
// Обрабатываемый символ
Look: Char;
// Файловая переменная
InFile: TextFile;
implementation
{$R *.dfm}
// Чтение символа из входного потока
procedure GetChar();
begin
Read(InFile, Look)
end;
// Распознавние и пропуск перевода строки
procedure NextLine();
begin
if (Look = CR) then begin
GetChar();
if (Look = LF) then
GetChar()
end
end;
// Выводим символ
procedure OutputSymbol();
begin
MainForm.RichEdit.Text := MainForm.RichEdit.Text + Look;
end;
// Разбираем тэг
procedure ParseTag();
begin
GetChar;
Tag := Look;
case Look of
'b': MainForm.RichEdit.DefAttributes.Style := MainForm.RichEdit.DefAttributes.Style + [fsBold];
else MainForm.RichEdit.DefAttributes.Style := MainForm.RichEdit.DefAttributes.Style;
end;
GetChar;
repeat
MainForm.RichEdit.Text := MainForm.RichEdit.Text + Look;
GetChar()
until (Look = '~');
MainForm.RichEdit.DefAttributes.Style := MainForm.RichEdit.DefAttributes.Style - [fsBold]
end;
// Инициализация
procedure Init();
begin
GetChar()
end;
procedure TMainForm.DoTextClick(Sender: TObject);
begin
AssignFile(InFile, 'parse.txt');
Reset(InFile);
repeat
case Look of
'~': ParseTag();
else OutputSymbol()
end;
NextLine()
until Eof(InFile);
Init();
CloseFile(InFile)
end;
Dib@zol (2007-09-30 17:17:00) [2]Уважаемый АП! Я вообще-то это автору темы сказал.
Anatoly Podgoretsky (2007-09-30 17:13:00) [3]Еще чего, делать мне больше нечего.
Dib@zol (2007-09-30 17:06:00) [4]> [2] Anatoly Podgoretsky © (30.09.07 17:05)
Не нужно быть эйнштейном, чтоб это понять. Показывай как делал.
Anatoly Podgoretsky (2007-09-30 17:05:00) [5]> Kostya2x (30.09.2007 16:48:00) [0]
У тебя ошибка в программе.
Dib@zol (2007-09-30 16:58:00) [6]как-то теги косо расставлены...