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

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

07.02.2016, 04:51. Показов 1148. Ответов 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
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru