CEdit управляют максимальной длиной? (в символах это может отобразиться),

Вы можете использовать это регулярное выражение с соответствием: /\b\d+\b/g

Он сопоставляет цифры между любыми не буквенно-цифровыми значениями, такими как [и].

const a = 'info.name[0][1][5].data[10]';
const result = a.match(/\b\d+\b/g) || [];
console.log(result);

9
задан rec 15 October 2008 в 20:55
поделиться

3 ответа

Я нашел, что документация является неправильной при упоминании размера по умолчанию для одной строки управление CEdit в перспективе.

Я выполнил этот код:

CWnd* pWnd = dlg.GetDlgItem(nItemId);
CEdit *edit = static_cast<CEdit*>(pWnd); //dynamic_cast does not work
if(edit != 0)
{
    UINT limit = edit->GetLimitText(); //The current text limit, in bytes, for this CEdit object.
    //value returned: 30000 (0x7530)
    edit->SetLimitText(0);
    limit = edit->GetLimitText();
    //value returned: 2147483646 (0x7FFFFFFE) 
}

состояния документации:

Прежде чем EM_SETLIMITTEXT называют, предел по умолчанию для суммы текста, который пользователь может ввести в средствах редактирования, является 32 767 символами.

который является, по-видимому, неправильным.

15
ответ дан 4 December 2019 в 09:14
поделиться

Можно узнать то, что максимум для управления путем вызова CEdit:: GetLimitText () на Вашем управлении. Это возвращает максимальный размер для символьных данных в байтах. Можно изменить максимальный размер с помощью CEdit:: SetLimitText () функция.

SetLimitText () функция эквивалентен отправке сообщения EM_SETLIMITTEXT. Документация для того сообщения дает максимальные размеры, которые могут использоваться, но так как это связи MSDN, которые будут, вероятно, разорваны завтра, я скопирую релевантную информацию :)

Параметр UINT интерпретируется как:

Максимальное количество TCHARs пользователь может войти. Для текста ANSI это - число байтов; для текста Unicode это - количество символов. Это число не включает завершающийся нулевой символ. Богатые средства редактирования: Если этот параметр является нулем, текстовая длина установлена на 64 000 символов.

Средства редактирования на 2000/XP Windows NT/: Если этот параметр является нулем, текстовая длина установлена на символы 0x7FFFFFFE для однострочных средств редактирования или –1 для многострочных средств редактирования.

Средства редактирования на Windows 95/98/Me: Если этот параметр является нулем, текстовая длина установлена на 0x7FFE символы для однострочных средств редактирования или 0xFFFF для многострочных средств редактирования.

Кроме того, от раздела Remarks:

Прежде чем EM_SETLIMITTEXT называют, предел по умолчанию для суммы текста, который пользователь может ввести в средствах редактирования, является 32 767 символами.

Средства редактирования на 2000/XP Windows NT/: Для однострочных средств редактирования текстовый предел является или 0x7FFFFFFE байтами или значением wParam параметра, какой бы ни меньше. Для многострочных средств редактирования это значение составляет или-1 байт или значение wParam параметра, какой бы ни меньше.

Средства редактирования на Windows 95/98/Me: Для однострочных средств редактирования текстовый предел является или 0x7FFE байтами или значением wParam параметра, какой бы ни меньше. Для многострочных средств редактирования это значение является или 0xFFFF байтами или значением wParam параметра, какой бы ни меньше.

Я предполагаю, что они имели в виду 0xFFFFFFFF вместо-1 во втором абзаце там...

6
ответ дан 4 December 2019 в 09:14
поделиться

"(в символах это может отобразиться)"! = "при попытке добавить символ".

"при попытке добавить символ" == "Максимальное количество TCHARs может войти пользователь", если Вы не означаете программно пытаться добавить символ.

"символы 0x7FFFFFFE"! = "0x7FFFFFFE байты" кроме иногда, факт, который заключенный в кавычки текст MSDN иногда понимает.

Я буду держать пари, что никто не знает ответ на исходный вопрос. Но "байты 0x7FFFFFFE" вероятный из многих пределов.

2
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: