Главная страница
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.035 c
15-1190138260
Mozart
2007-09-18 21:57
2007.10.21
знатели Exchange!!! ПОМОГИТЕ!!!!


11-1174310568
Trible
2007-03-19 16:22
2007.10.21
Фильтр для TKOLmdvXLGrid


3-1181655989
Лёля
2007-06-12 17:46
2007.10.21
Midas Insufficient memory for this operation


15-1190241631
Германн
2007-09-20 02:40
2007.10.21
Поддержим отечественных производителей!


2-1191060985
antonn
2007-09-29 14:16
2007.10.21
GetProcessAffinityMask