Главная страница
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.024 c
2-1190909885
_@_@_
2007-09-27 20:18
2007.10.21
Как в Memo отловить перенос строки.


2-1190723682
smak
2007-09-25 16:34
2007.10.21
Как заставить прогу реагировать на события при обр. запроса


3-1181803060
Dust
2007-06-14 10:37
2007.10.21
fast report в dll


3-1182153666
mefodiy
2007-06-18 12:01
2007.10.21
SQL запрос с использованием LIKE


2-1190717380
Washington
2007-09-25 14:49
2007.10.21
TabSet