wxStyledTextCtrl->FindText и русские символы

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Sat Apr 25, 2020 2:04 pm

Почему wxStyledTextCtrl->FindText ищет русские символы только с флагом wxSTC_FIND_MATCHCASE?

С английскими и цифрами все четко работает, а для русских символов ищет только если совпадает регистр букв.
Поведение одинаковое и на Windows и на Linux.

Может как-то надо локаль установить?

Code: Select all

	int flags = 0;
	if (m_bWholeWord)
		flags |= wxSTC_FIND_WHOLEWORD;
	if (m_bMatchCase)
	{
		flags |= wxSTC_FIND_MATCHCASE;
		m_pSTC->SetSearchFlags(wxSTC_FIND_MATCHCASE);
	}
	else
	{
		int d = m_pSTC->GetSearchFlags();
		d &= ~wxSTC_FIND_MATCHCASE;
			m_pSTC->SetSearchFlags(d);
	}
	
	.............
	
	int res = m_pSTC->FindText(pos1, pos2, m_szSearchText, flags, &end);
	
спс
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

Kvaz1r
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 207
Joined: Tue Jun 07, 2016 1:07 pm

Re: wxStyledTextCtrl->FindText и русские символы

Post by Kvaz1r » Sun Apr 26, 2020 8:39 am

Можете показать минимальный воспроизводимый пример?

User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

Re: wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Sun Apr 26, 2020 11:46 am

Использовался пример STC из SAMPLES.
Я добавил в FileOpen() - функцию поиска при открытии файла

Code: Select all

void AppFrame::FileOpen (wxString fname)
{
    wxFileName w(fname); w.Normalize(); fname = w.GetFullPath();
    m_edit->LoadFile (fname);
    m_edit->SelectNone();

	if(fname.Find(L"stctest.cpp") != -1)
		return;

    int flags = 0;
    int end, pos1, pos2;
    int pos = m_edit->GetCurrentPos();

    pos1 = pos;
    pos2 = m_edit->GetLastPosition();

    int res = m_edit->FindText(pos1, pos2, L"перем", flags, &end);
    if (res == wxSTC_INVALID_POSITION)
        wxMessageBox(L"no перем");
	else
        wxMessageBox(L"перем found");

    res = m_edit->FindText(pos1, pos2, L"Перем", flags, &end);
    if (res == wxSTC_INVALID_POSITION)
        wxMessageBox(L"no Перем");
	else
        wxMessageBox(L"Перем found");

}
Если открыть файл с содержимым

Code: Select all

Перем тест;
то фразу "Перем"находит, а "перем" - НЕТ
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

Kvaz1r
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 207
Joined: Tue Jun 07, 2016 1:07 pm

Re: wxStyledTextCtrl->FindText и русские символы

Post by Kvaz1r » Sun Apr 26, 2020 12:39 pm

Файл в какой кодировке?

User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

Re: wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Sun Apr 26, 2020 1:50 pm

UTF-8

ascii вообще ничего не находит
Attachments
ascii.txt
(12 Bytes) Downloaded 9 times
stctest.cpp
(28.91 KiB) Downloaded 10 times
utf8.txt
(24 Bytes) Downloaded 9 times
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

Kvaz1r
Filthy Rich wx Solver
Filthy Rich wx Solver
Posts: 207
Joined: Tue Jun 07, 2016 1:07 pm

Re: wxStyledTextCtrl->FindText и русские символы

Post by Kvaz1r » Sun Apr 26, 2020 8:30 pm

Чудно, похоже на баг.

User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

Re: wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Mon Apr 27, 2020 5:27 am

ну, как так жить? (((
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 4058
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: wxStyledTextCtrl->FindText и русские символы

Post by ONEEYEMAN » Mon Apr 27, 2020 10:33 pm

Dobrogo vremeni sutok,
Dlja proverki poprobujte skompilirovat Scintilla.

Spasibo.

User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

Re: wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Tue Apr 28, 2020 6:07 am

при компиляции Scintilla выдает ошибку

Code: Select all

./../src/AutoComplete.cxx:16:23: fatal error: string_view: Нет такого файла или каталога
я нашел файл string_view, в папке /usr/include/c++/6/experimental/string_view
попробовал его подставить, потом посыпались другие ошибки

Походу придется мне пока смериться с этим багом

Спасибо
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 307
Joined: Fri Dec 09, 2016 7:28 am
Contact:

Re: wxStyledTextCtrl->FindText и русские символы

Post by cutecode » Tue May 12, 2020 11:57 am

Только щас заметил.

Оказывается в code::blocks такое же поведение на Линукс.
Русские слова ищет только если совпадает регистр
wx 3.1.4 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru

Post Reply