Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Разбор текста с "тегами" и вывод его на RichEdit   Найти похожие ветки 

 
Kostya2x   (2007-09-30 16:48) [0]

Здравствуйте!

Мне необходимо сделать такую вещь... Есть файл с текстом типа
~b~The some bold text~ normal text ~u~underline text~
~bu~bold underline text~
Надо считать его, обработать "теги" и вывести текст на RichEdit
в соответствии с ними.

Сколько я не бился, у меня почему-то получается зависание. :-)

У кого-нибудь есть примеры того, как можно сделать подобное? "Теги"
могут быть и другими, это не принципиально.


 
Dib@zol ©   (2007-09-30 16:58) [1]

как-то теги косо расставлены...


 
Anatoly Podgoretsky ©   (2007-09-30 17:05) [2]

> Kostya2x  (30.09.2007 16:48:00)  [0]

У тебя ошибка в программе.


 
Dib@zol ©   (2007-09-30 17:06) [3]

> [2] Anatoly Podgoretsky ©   (30.09.07 17:05)

Не нужно быть эйнштейном, чтоб это понять. Показывай как делал.


 
Anatoly Podgoretsky ©   (2007-09-30 17:13) [4]

Еще чего, делать мне больше нечего.


 
Dib@zol ©   (2007-09-30 17:17) [5]

Уважаемый АП! Я вообще-то это автору темы сказал.


 
Kostya2x   (2007-09-30 21:14) [6]

Вот код. Сильно не бейте меня по разным частям тела за него. :)


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;



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
15-1190624861
tytus
2007-09-24 13:07
2007.10.21
Delphi2007 for Win32.


2-1190909885
_@_@_
2007-09-27 20:18
2007.10.21
Как в Memo отловить перенос строки.


2-1190921326
Алик
2007-09-27 23:28
2007.10.21
Как правильно очищать буффер?


15-1190118818
Шёлк
2007-09-18 16:33
2007.10.21
Тема о калькуляторе


15-1190343168
Slider007
2007-09-21 06:52
2007.10.21
С днем рождения ! 21 сентября 2007 пятница