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

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

07.02.2016, 04:51. Показов 1146. Ответов 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
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,912
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru