С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30

Исправить ошибки в коде подсветки синтаксиса RichEdit

07.02.2016, 04:51. Показов 1109. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вынесено в отдельную тему отсюда: Подсветка синтаксиса RichEdit

Ребят помогите разобраться, нашел то что нужно да вот не пашет, выдает ошибки, что может быть
ошибки
[bcc32 Error] QxMatPadCpp.cpp(276): E2141 Declaration syntax error
[bcc32 Error] QxMatPadCpp.cpp(293): E2238 Multiple declaration for 'ST'
[bcc32 Error] QxMatPadCpp.cpp(293): E2344 Earlier declaration of 'ST'
[bcc32 Error] QxMatPadCpp.cpp(293): E2141 Declaration syntax error
[bcc32 Error] QxMatPadCpp.cpp(294): E2238 Multiple declaration for 'FS'
[bcc32 Error] QxMatPadCpp.cpp(294): E2344 Earlier declaration of 'FS'
[bcc32 Error] QxMatPadCpp.cpp(294): E2141 Declaration syntax error
[bcc32 Error] QxMatPadCpp.cpp(298): E2040 Declaration terminated incorrectly
вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const char * ARRAY[] = 
{ 
        "asm",        "do",           "if",               "return",      "typedef", 
        "auto",       "double",       "inline",           "short",       "typeid", 
        "bool",       "dynamic_cast", "int",              "signed",      "typename", 
        "break",      "else",         "long",             "sizeof",      "union", 
        "case",       "enum",         "mutable",          "static",      "unsigned", 
        "catch",      "explicit",     "namespace",        "static_cast", "using", 
        "char",       "export",       "new",              "struct",      "virtual", 
        "class",      "extern",       "operator",         "switch",      "void", 
        "const",      "false",        "private",          "template",    "volatile", 
        "const_cast", "float",        "protected",        "this",        "wchar_t", 
        "continue",   "for",          "public",           "throw",       "while", 
        "default",    "friend",       "register",         "true", 
        "delete",     "goto",         "reinterpret_cast", "try", 
}; 
 
TSearchTypes ST; ST << stMatchCase; 
TFontStyles  FS; FS << fsBold; 
 
int i = 0; 
 
while (i < sizeof(ARRAY) / sizeof(ARRAY[0])) 
{ 
        AnsiString FIND = ARRAY[i]; 
 
        for (int i = 0; i < RichEdit->Lines->Count; i++) 
        { 
                int START  = RichEdit->SelStart + RichEdit->SelLength; 
                int LENGHT = RichEdit->Text.Length() - START; 
                int FOUND  = RichEdit->FindText(FIND, START, LENGHT, ST); 
 
                if (FOUND != -1) 
                { 
                        RichEdit->SelStart  = FOUND; 
                        RichEdit->SelLength = FIND.Length(); 
                        RichEdit->SelAttributes->Color = clBlack; 
                        RichEdit->SelAttributes->Style = FS; 
                } 
        } 
 
        i++; 
 
        RichEdit->SelStart = 0; 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2016, 04:51
Ответы с готовыми решениями:

Исправить ошибки в коде
#include &lt;windows.h&gt; #include &lt;mmsystem.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;IniFiles.hpp&quot; #include &lt;Tlhelp32.h&gt; ...

Не могу исправить ошибки в коде
Парни, помогите пожалуйста ошибки в коде исправить. Всё что мог - исправил. Остальные никак не могу. void podschet(pat a, int s) { ...

Подсветка синтаксиса в RichEdit
Доброго времени суток! Как можно в RichEdit реализовать подсветку синтаксиса HTML например? Заранее спасибо!!!

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
07.02.2016, 12:02
Никаких подобных ошибок нет, код прекрасно компилируется. Хотя я бы написал так:
C++
18
19
20
21
TSearchTypes ST = TSearchTypes() << stMatchCase;
TFontStyles  FS = TFontStyles() << fsBold;
 
unsigned i = 0; // чтобы убрать Warning
1
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
08.02.2016, 21:14  [ТС]
Не понимаю ну что ни так Вы уж извините но я опять с вопросом, вот код он компилируется, но при нажатии на любую клавишу выдает \colortbl ;\\red255\\green0\\blue0;\\red0\\green25 5\\blue0;} Я новичок и только учусь, помогите пожалуйста укажите ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
TMainForm *MainForm;
#include "vector"
#include "map"
#include "string"
typedef AnsiString Ansi;
typedef std::string Strs;
struct Style{
Ansi opentags,
     closetags;
Style(bool,bool,bool,bool,int,int);
//булевы флаги управляют стилями
//F и H 1, 2, ... – индексы цвета в таблице
};
 
Style::Style(bool B,bool I,bool U,bool S,int F,int H){
if(B) { opentags += "\\b "; closetags.Insert("\\b0 ",1);}
if(I) { opentags += "\\i "; closetags.Insert("\\i0 ",1);}
if(U) { opentags += "\\ul "; closetags.Insert("\\ul0 ",1);}
if(S) { opentags += "\\strike ";
       closetags.Insert("\\strike0 ",1);}
if(F > 0){ opentags += ("\\cf" + Ansi(F) + " ");
           closetags.Insert("\\cf0 ",1);}
if(H > 0){ opentags += ("\\highlight" + Ansi(H) + " ");
           closetags.Insert("\\highlight0 ",1);}
}
//---------------------------------------------------------------------------
struct Words{
int    size;
Ansi   word;
Style *style;
Words(Ansi w,Style *s){word = w;style = s;size = w.Length();}
};
typedef std::vector <Words> Library;
Library *Alexandria;
//---------------------------------------------------------------------------
 
typedef std::map <int,Words*> Hash;//
class HighLighter{
private:
Hash               find;
Hash::iterator     ash;
Library           *Lib;
Library::iterator  pos;
Ansi               ColorTable;
void     Scan(TRichEdit *);//÷òîáû çàïîëíèòü find
void     FindKMP(char *txt,Library::iterator p);
void     ScanKMP(TRichEdit *);
public:
         HighLighter(Ansi C, Library* L){ColorTable = C;Lib = L;}
void     HighLight(TRichEdit*);
};
 
void HighLighter::FindKMP(char *txt,Library::iterator p){
char *sub = p->word.c_str();
int X = p->word.Length(), *pf = new int [X], T = strlen(txt);
pf[0] = 0;
for (int k = 0, i = 1; i<X; ++i){
  while(k>0 && sub[i] != sub[k]) k = pf[k-1];
  if (sub[i] == sub[k]) k++;
  pf[i] = k;
                                }
for (int k = 0, i = 0; i<T; ++i){
  while ((k>0) && (sub[k] != txt[i])) k = pf[k-1];
  if (sub[k] == txt[i]) k++;
  if (k==X) find [i-X+2] == pf;
                                }
 delete [] pf;
}
/*
void HighLighter::ScanKMP(TRichEdit *r){
  char *c = strdup(r->Text.c_str());
  find.clear();
  for(pos = Lib->begin();pos != Lib->end();++pos) FindTextA(c,pos);
  free(c);
}
*/
void HighLighter::Scan(TRichEdit *r){
int len = r->Text.Length();
find.clear(); TSearchTypes sOpts;
sOpts = TSearchTypes() << stMatchCase << stWholeWord;
for(pos = Lib->begin();pos != Lib->end();++pos){
  int start = 0, end = len, is;
  while (0 <= (is = r->FindText (pos->word,start,end,sOpts))){
    find[is+1] ->word; // 
    start += pos->size; end = len - start;
                                                             }
                                               }
}
 
void HighLighter::HighLight(TRichEdit *r)
{
Scan(r); Ansi s = r->Text;
Ansi result = "{\\rtf1 "; result += ColorTable;
ash = find.begin();//
for(int i = 1;i <= s.Length();i++)
{
 if(!ash->first || i < ash->first)
 {if(s[i] == '\n')result += "\\par "; else result += s[i]; }
 else
 if(i == ash->first){
  result += ash->second->style->opentags;
  if(s[i] == '\n')result += "\\par "; else result += s[i];
 } else
 if((i >  ash->first) && (i < (ash->first + ash->second->size))){
  result += s[i];
 }else
 if(i == (ash->first + ash->second->size)){
  result += ash->second->style->closetags;
  if(s[i] == '\n')result += "\\par "; else result += s[i];
  ++ash;
 }
}
result += "\\par }";
//----------------------------------------------------------------------------------------------------------------------------
                r->DoubleBuffered = 1;
                int eventMask = (int)::SendMessage(r->Handle,EM_SETEVENTMASK,0,0);
                ::SendMessage(r->Handle,WM_SETREDRAW,false,0);
                CHARRANGE chrgSave;
                ::SendMessage(r->Handle,EM_EXGETSEL,0,(LPARAM)&chrgSave);
                int en = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
r->Text = result;//ìåíÿåì òåêñò â RichEdit
                ::SendMessage(r->Handle,EM_EXSETSEL,0,(LPARAM)&chrgSave);
                int st = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
                if (st != en) SendMessage(r->Handle,EM_LINESCROLL,0,en-st);
                ::SendMessage(r->Handle, WM_SETREDRAW,true,0);
                ::InvalidateRect(r->Handle,0,true);
                ::SendMessage(r->Handle,EM_SETEVENTMASK,0,eventMask);
                r->DoubleBuffered = 0;
                r->Repaint();
}
//---------------------------------------------------------------------------
HighLighter *hlter;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
Alexandria = new Library;                //    B I U S F H
Alexandria->push_back(Words("Стиль1",new Style(1,0,0,0,0,0)));
Alexandria->push_back(Words("Стиль2",new Style(0,1,0,0,0,0)));
Alexandria->push_back(Words("Стиль3",new Style(0,0,1,0,0,0)));
Alexandria->push_back(Words("Стиль4",new Style(0,0,0,1,0,0)));
Alexandria->push_back(Words("Стиль5",new Style(0,0,0,0,2,0)));
Alexandria->push_back(Words("Стиль6",new Style(0,0,0,0,0,1)));
Ansi colors = "{\\colortbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}";
hlter = new HighLighter(colors,Alexandria);
}
 
 
void __fastcall TMainForm::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
hlter->HighLight(RichEdit1);
}
Добавлено через 52 секунды
volvo спасибо с тем вопросом разобрался

Добавлено через 12 часов 1 минуту
Кто нибудь поможет?

Добавлено через 3 часа 15 минут
Выдает ошибки, помогите разобраться
[bcc32 Error] E2316 'FindTextA' is not a member of 'TRichEdit'
Full parser context
: parsing: void HighLighter::Scan(TRichEdit *)
[bcc32 Error] E2034 Cannot convert 'std::_Vector_iterator<Words,std::alloca tor<Words> >' to 'Words *'
Full parser context
parsing: void HighLighter::Scan(TRichEdit *)
: W8004 'end' is assigned a value that is never used
Full parser context
parsing: void HighLighter::Scan(TRichEdit *)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <vector>
#include <map>
#include <string>
typedef AnsiString Ansi;
typedef std::string Strs;
struct Style{
Ansi opentags,
     closetags;
Style(bool,bool,bool,bool,int,int);
//булевы флаги управляют стилями
//F и H 1, 2, ... – индексы цвета в таблице
};
 
Style::Style(bool B,bool I,bool U,bool S,int F,int H){
if(B) { opentags += "\\b "; closetags.Insert("\\b0 ",1);}
if(I) { opentags += "\\i "; closetags.Insert("\\i0 ",1);}
if(U) { opentags += "\\ul "; closetags.Insert("\\ul0 ",1);}
if(S) { opentags += "\\strike ";
       closetags.Insert("\\strike0 ",1);}
if(F > 0){ opentags += ("\\cf" + Ansi(F) + " ");
           closetags.Insert("\\cf0 ",1);}
if(H > 0){ opentags += ("\\highlight" + Ansi(H) + " ");
           closetags.Insert("\\highlight0 ",1);}
}
//---------------------------------------------------------------------------
struct Words{
int    size;
Ansi   word;
Style *style;
Words(Ansi w,Style *s){word = w;style = s;size = w.Length();}
};
typedef std::vector <Words> Library;
Library *Alexandria;
//---------------------------------------------------------------------------
 
typedef std::map <int,Words*> Hash;// ключ == позиция вхождения
class HighLighter{
private:
Hash               find;
Hash::iterator     ash;
Library           *Lib;
Library::iterator  pos;
Ansi               ColorTable;
void     Scan(TRichEdit *);// что бы заполнить find
void     FindKMP(char *txt,Library::iterator p);
void     ScanKMP(TRichEdit *);
public:
         HighLighter(Ansi C, Library* L){ColorTable = C;Lib = L;}
void     HighLight(TRichEdit*);
};
 
void HighLighter::FindKMP(char *txt,Library::iterator p){
char *sub = p->word.c_str();
int X = p->word.Length(), *pf = new int [X], T = strlen(txt);
pf[0] = 0;
for (int k = 0, i = 1; i<X; ++i){
  while(k>0 && sub[i] != sub[k]) k = pf[k-1];
  if (sub[i] == sub[k]) k++;
  pf[i] = k;
                                }
for (int k = 0, i = 0; i<T; ++i){
  while ((k>0) && (sub[k] != txt[i])) k = pf[k-1];
  if (sub[k] == txt[i]) k++;
  if (k==X) find [i-X+2] = p;
                                }
 delete [] pf;
}
/*
void HighLighter::ScanKMP(TRichEdit *r){
  char *c = strdup(r->Text.c_str());
  find.clear();
  for(pos = Lib->begin();pos != Lib->end();++pos) FindTextA(c,pos);
  free(c);
} */
 
void HighLighter::Scan(TRichEdit *r){
int len = r->Text.Length();
find.clear(); TSearchTypes sOpts;
sOpts = TSearchTypes() << stMatchCase << stWholeWord;
for(pos = Lib->begin();pos != Lib->end();++pos){
  int start = 0, end = len, is;
  while (0 <= (is = r->FindTextA(pos->word,start,end,sOpts))){
    find[is+1] = pos ; // пересчитываем переменные поиска
    start += pos->size; end = len - start;
                                                             }
                                               }
}
 
void HighLighter::HighLight(TRichEdit *r)
{
Scan(r); Ansi s = r->Text;
Ansi result = "{\\rtf1 "; result += ColorTable;
ash = find.begin();//
for(int i = 1;i <= s.Length();i++)
{
 if(!ash->first || i < ash->first)
 {if(s[i] == '\n')result += "\\par "; else result += s[i]; }
 else
 if(i == ash->first){
  result += ash->second->style->opentags;
  if(s[i] == '\n')result += "\\par "; else result += s[i];
 } else
 if((i >  ash->first) && (i < (ash->first + ash->second->size))){
  result += s[i];
 }else
 if(i == (ash->first + ash->second->size)){
  result += ash->second->style->closetags;
  if(s[i] == '\n')result += "\\par "; else result += s[i];
  ++ash;
 }
}
result += "\\par }";
// эти блоки предназначены для устранения
//мерцания экрана
                r->DoubleBuffered = 1;
                int eventMask = (int)::SendMessage(r->Handle,EM_SETEVENTMASK,0,0);
                ::SendMessage(r->Handle,WM_SETREDRAW,false,0);
                CHARRANGE chrgSave;
                ::SendMessage(r->Handle,EM_EXGETSEL,0,(LPARAM)&chrgSave);
                int en = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
r->Text = result;//меняем текст в RichEdit
                ::SendMessage(r->Handle,EM_EXSETSEL,0,(LPARAM)&chrgSave);
                int st = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
                if (st != en) SendMessage(r->Handle,EM_LINESCROLL,0,en-st);
                ::SendMessage(r->Handle, WM_SETREDRAW,true,0);
                ::InvalidateRect(r->Handle,0,true);
                ::SendMessage(r->Handle,EM_SETEVENTMASK,0,eventMask);
                r->DoubleBuffered = 0;
                r->Repaint();
}
//---------------------------------------------------------------------------
HighLighter *hlter;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
Alexandria = new Library;                //    B I U S F H
Alexandria->push_back(Words("Стиль1",new Style(1,0,0,0,0,0)));
Alexandria->push_back(Words("Стиль2",new Style(0,1,0,0,0,0)));
Alexandria->push_back(Words("Стиль3",new Style(0,0,1,0,0,0)));
Alexandria->push_back(Words("Стиль4",new Style(0,0,0,1,0,0)));
Alexandria->push_back(Words("Стиль5",new Style(0,0,0,0,2,0)));
Alexandria->push_back(Words("Стиль6",new Style(0,0,0,0,0,1)));
Ansi colors = "{\\colortbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}";
hlter = new HighLighter(colors,Alexandria);
}
/*
RichEdit1->Text = "{\\rtf \
{\\colorbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}\
\\highlight2 Green\\highlight0 \\par \\cf1 Red\\cf0 \\par}";
*/
 
void __fastcall TMainForm::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
hlter->HighLight(RichEdit1);
}
0
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
14.02.2016, 20:56  [ТС]
Подскажите пожалуйста по нижнему вопросу по ошибкам в коде

Добавлено через 1 час 52 минуты
VOLVO очень жду что Вы поможете, Вы явно в этом хорошо разбираетесь, уже две неделе бьюсь над вопросом, литературы много да вот ни чего подходящего по данному вопросу не могу найти
0
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
15.02.2016, 22:22  [ТС]
частично вопрос решен, в буилдере 6 все проходит но в XE категоричен, спасибо книге Архангельского Язык С++ в С++ Builder, хорошее справочное пособие, помогите если можно в последнем вопросе понять, что может не нравиться компилятору XE, строку с ошибкой прокомментировал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void HighLighter::FindKMP(char *txt,Library::iterator p){
char *sub = p->word.c_str();
int X = p->word.Length(), *pf = new int [X], T = strlen(txt);
pf[0] = 0;
for (int k = 0, i = 1; i<X; ++i){
  while(k>0 && sub[i] != sub[k]) k = pf[k-1];
  if (sub[i] == sub[k]) k++;
  pf[i] = k;
                                }
for (int k = 0, i = 0; i<T; ++i){
  while ((k>0) && (sub[k] != txt[i])) k = pf[k-1];
  if (sub[k] == txt[i]) k++;
  if (k==X) find [i-X+2] = p ; // в этом месте выдает ошибку
                                }
 delete [] pf;
}
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.02.2016, 23:06
Цитата Сообщение от JoniRich Посмотреть сообщение
find [i-X+2] =
Значение i здесь, вероятно, нулевое, как и k. Вы уверены, что i-X+2 не отрицательная величина?
1
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
15.02.2016, 23:23  [ТС]
если отрицательная тоже так же пишет ошибку [bcc32 Error] (76): E2034 Cannot convert 'std::_Vector_iterator<Words,std::alloca tor<Words> >' to 'Words *'
Full parser context
(64): parsing: void HighLighter::FindKMP(char *,std::_Vector_iterator<Words,std::alloc ator<Words> >)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.02.2016, 23:28
Цитата Сообщение от JoniRich Посмотреть сообщение
Cannot convert 'std::_Vector_iterator<Words,std::alloca tor<Words> >' to 'Words *'
Ну так вот здесь и ошибка; данных для вывода недостаточно из того, что вы опубликовали. Но в любом случае - вопрос больше к пользователям ХЕ, так что я помолчу пока... .
1
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
15.02.2016, 23:32  [ТС]
Спасибо, в любом случае Вы оказали помощь, попытаться надо было, да ошибка здесь, как бы Вы написали данное выражение ?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.02.2016, 23:43
Вам нужны советы дилетанта? Я бы попробовал = &p или *p (Library <Words>, Hash <int, *Words>), потом бы вместе посмеялись... .
1
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 30
15.02.2016, 23:47  [ТС]
полный код не дублирую он выше, советы любые рассматриваю, сам дилетант, изучал си еще в институте в 90-х сейчас ни чего не помню уже, вот с литературой и примерами сижу разбираюсь, вообщем учусь, посмеемся когда пойму ошибки, наверняка опять какой нибудь пустяк
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2016, 23:47
Помогаю со студенческими работами здесь

Подсветка синтаксиса в RichEdit
Хочу подсветить html разметку без всяких специальных компонентов через RichEdit (для начала хотя бы просто сами теги без атрибутов и...

Подсветка синтаксиса RichEdit
Всем доброго времени суток. Кто в курсе почему не получается вот с таким кодом: void __fastcall TForm2::RichEdit1Change(TObject *Sender) ...

Подсветка синтаксиса RichEdit
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Подсветка синтаксиса в RichEdit
Доброго времени суток. Пишу текстовый редактор с подсветкой синтаксиса хтмл. подскажите как этот код переделать под множество ключевых...

Подсветка HTML синтаксиса в RichEdit
Помогите реализовать подсветку HTML тегов в RichEdit. Допустим в текстовом файле находиться список слов, которые необходимо подсвечивать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru