Спрашивал в англоязычном сегменте, но никто не знает.
Метод wxStyledTextCtrl::Remove не до конца удаляет необходимый текст не кириллице.
Code: Select all
//текст который ищем, берём из обычного wxTextCtrl
wxString valDel = m_textCtrlDelText2->GetValue();
int valDelLen = valDel.Len();
//здесь начинаем работать с wxStyledTextCtrl
// Устанавливаем юникод
m_styledTextCtrl->SetCodePage(wxSTC_CP_UTF8);
int docLength = m_styledTextCtrl->GetLastPosition(); //Длина документа
//Ищем в документе нужный текст
int valPos = m_styledTextCtrl->FindText(0, docLength, valDel, wxSTC_FIND_MATCHCASE);
//Удаляем найденный текст
m_styledTextCtrl->Remove(valPos, valPos+valDelLen);
Если текст состоит например из 4-х букв (например "руб.") то удаляется только две буквы.
Т.е. после вызова m_styledTextCtrl->Remove(valPos, valPos+valDelLen); слово "руб." превращается
в "б.", т.е. удалились только первые две буквы "ру".
С латиницей такой проблемы нет.
wxTextCtrl в многострочном режиме, прекрасно справляется, глюк только с wxStyledText.
Понятно, что проблема повидимому с Юникодом.
Ни на форуме, ни в рассылке wx-users ничего подобного не нашёл.
Чё за хрень? Второй день не могу побороть.
ОС: Xubutnu 20.04
wx: 3.0.4 и 3.1.4