Вверх ↑
Ответов: 4628
Рейтинг: 749
#1: 2020-01-05 16:23:11 ЛС | профиль | цитата
В данном случае на месте Result оказывалась действительная строка (по факту, при пустой AnsiLowerCase(msk) возвращалась предыдущая str). Х.з. как оно так получалось - может где-то в стеке оставалась ссылка, что-то не чистилось после предыдущих вызовов для оптимизации.

Строго формально, согласно языку все локальные переменные должны инициализироваться программистом. У компилятора даже есть такое
Warning: function result variable of a managed type does not seem to initialized
То-есть, хотя компилятор сам обнуляет строковые переменные, потому как автоматически управляет счетчиком ссылок (а при неинициализированной переменной гарантированно падал бы на этом), но это, всё же, "особенности реализации", на которые не стоит полагаться.
карма: 26

0
Редактировалось 2 раз(а), последний 2020-01-05 16:25:28