|
Вопрос # 6 458/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Помогите доделать программу. Цель выводить символы разного цвета в RichEdit.
Печатные символы должны выводиться одним цветом, вместо не печатных должен быть их код другим цветом
const c: array [boolean] of tcolor=(clred, clblue);
var b: byte;
m: boolean;
i: integer;
begin
i:=0;
while i<29 do begin
b:=round(i*255/30);
inc(i);
m:=b in [48..58,65..90,97..122,192..255];
richedit1.SelAttributes.color:=c[m];
if m then
richedit1.Lines.Strings[0]:=
richedit1.Lines.Strings[0]+chr(b)+','
else
richedit1.Lines.Strings[0]:=
richedit1.Lines.Strings[0]+inttohex(b,2)+',';
end;
end;
 |
Вопрос задал: Drinkenz (статус: 1-ый класс)
Вопрос отправлен: 24 июля 2013, 20:05
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 26 июля 2013, 19:59; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 24 июля 2013, 20:22 [#1]:
Ну а выводится-то в итоге что? Где скриншот?
И самое главное: если нужно разноцветный текст только отображать, то использование TRichEdit - хреновая идея.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Drinkenz (статус: 1-ый класс), 24 июля 2013, 20:36 [#2]:
Все символы выводятся черным цветом. Скриншоты я не умею вставлять.
|
|
min@y™ (статус: Доктор наук), 24 июля 2013, 20:48 [#3]:
Цитата (Drinkenz):
Все символы выводятся черным цветом.
А для чего именно такой функционал? Для чего это всё с практической точки зрения? Я это к тому, что изначально TRichEdit, IMHO, самый глючный компонент в системе. В своей практике я всегда старался избегать его использования, и мне это всегда удавалось. Если цветной текст нужен только для просмотра (и копирования в б/о), то можно воспользоваться чем-нибудь попроще и постабильнее.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Drinkenz (статус: 1-ый класс), 24 июля 2013, 20:58 [#4]:
Какие компоненты могут быть проще RichEdit? Если Memo, то он не поддерживает цветных шрифтов.
Код будет использован для просмотра содержимого всякого рода файлов. При просмотре можно будет чисто визуально отличить русские от английских букв, печатное от не печатного, возможно выделить цветом всякие теги,чанки,сигнатуры. Наподобие HIEW короче.
|
|
Drinkenz (статус: 1-ый класс), 24 июля 2013, 21:04 [#5]:
На данный момент я занимаюсь отладкой LZW кодировщика и какой нибудь инструмент для просмотра выходящего потока байт был бы очень кстати.
А буквы цветные нужны для наглядности.
|
|
min@y™ (статус: Доктор наук), 24 июля 2013, 21:28 [#6]:
Цитата (Drinkenz):
Какие компоненты могут быть проще RichEdit?
Для просмотра - есть. Например, TWebBrowser, THtmlLite и прочие компоненты для просмотра HTML.
Есть ещё вариант покруче - использовать TSynEdit, но для него надо будет написать соответствующий компонент-highlighter - движок пользовательской онлайн-подсветки синтаксиса, если выделять коды непечатных символов как-нибудь так: abcd{0x1D}efgh, но это на любителя...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Drinkenz (статус: 1-ый класс), 26 июля 2013, 19:00 [#7]:
Решил проблему добавлением TWebBrowser. Может кому пригодится.
procedure Adw(b: byte);
const tg: array[boolean,0..1]of string=
(('<span style="color: #00f; font-size: 26px">','</span>'),
('<span style="color: #f00; font-size: 20px; font-weight: bold">','</span>'));
var m: boolean;
s: string;
begin
with form1 do begin
m:=(b in [48..57,65..90,97..122,192..255]);// цифры, англ, русск. буквы
if m then
s:=chr(b)+','
else
s:=inttohex(b,2)+',';
web.add(tg[m,0]+s+tg[m,1]);
web.SaveToFile('temp.htm');
invalidate;
end;
end;
// использование: Adw(255)
этот код добавить в FormPaint
Webbrowser1.Navigate('file:///'+
ExtractFilePath(application.ExeName)+'temp.htm');
|
26 июля 2013, 19:01: Статус вопроса изменён на решённый (изменил автор вопроса — Drinkenz)
|
min@y™ (статус: Доктор наук), 26 июля 2013, 19:59 [#8]:
Через файл - гениально ужас! Если заюзаешь THtmlLite, обойдёшься без файла и ядра Internet Explorer.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|