Середина () по сравнению с Mid$ ()

Попробуйте использовать onChangeText вместо onKeyPress. onChangeText передает измененный текст в качестве аргумента для обратного вызова, onKeyPress возвращает объект с нажатой клавишей, поэтому предупреждение вызвано тем, что текст свойства пароля и имени пользователя в состоянии содержит объект вместо строки.

РЕДАКТИРОВАТЬ Что касается второй проблемы (с обратными пробелами), обратите внимание, что onKeyPress вызывается перед обратными вызовами onChange, поэтому проверка происходит перед установкой измененного текста, попробуйте вообще удалить onKeyPress и сделать проверка валидации внутри validateInput до того, как вы установите setState. Таким образом, вы вызовете setState один раз с последними свойствами, которые вы хотите установить.

11
задан jakdep 9 February 2018 в 02:32
поделиться

3 ответа

Не стоит вызывать беспокойство о. Это - остаток от Microsoft Basic 15-20 лет назад, когда быстрый процессор был порядками величины медленнее, чем что-нибудь сегодня.

Это имеет определенный эстетический призыв использовать Mid$, а не позволить VB определить, каковы Ваши типы данных, все же. И если у Вас есть какие-либо циклы, которые выполняют его, скажем, тысячи изобилуют секунда, затем Ваш фактор любопытства мог бы увеличиться. Иначе, neh.

Вот ссылка на кого-то, кто измерил различие. Mid$ был приблизительно 2,5 раза с такой скоростью, как Середина. Включая тесты, возвращающиеся к VB4.

21
ответ дан 3 December 2019 в 03:19
поделиться

Пока производительность между ними незначительна не действительно дифференциатор, относительно которого можно использовать так или иначе.

Могут быть некоторые нюансы при использовании варианта, когда сильный тип требуется. Например, что происходит, когда Вы передаете вариант параметру, ожидая строку ByRef? Ничто плохо, но что-то немного больше, чем передача адреса происходит.

Следовательно, если Вы знаете, что хотите работать со строками, затем идут вперед и используют версии $ этих функций, поведение их и их использования в других выражениях более просто и лучше понятый. Если Вы знаете о необходимости в варианте, и исходные данные являются вариантами затем верное использование не версии $.

4
ответ дан 3 December 2019 в 03:19
поделиться

Честно, я думаю, что это незначительно.

Возможно, можно попробовать что-то вроде этого. Загрузите "Высокоэффективный Объект - таймер" с http://ccrp.mvps.org/, сделайте длинный цикл (приблизительно 1.000.000 повторений) строковых операций и измерьте различие времени выполнения. "Операциями" я имею в виду: Конкатенация Variants в противоположность конкатенации Strings. Mid() и Mid$() очень вероятно выполнит то же. OTOH - можно протестировать это также.

Если бы Вы сделали, то мне было бы интересно, если бы Вы отправили результаты.

3
ответ дан 3 December 2019 в 03:19
поделиться