| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Почему иногда не срабатывает оператор += с AnsiSt |
| Автор: Vyacheslav 29.5.2002, 14:33 | ||||
Оператор += не срабатывает , если он применен не просто к переменной, а свойству (property) класса.
Когда Вы используете оператор += для свойства Caption, компилятор генерит код, который создает новую временную переменную AnsiString. Затем компилятор вызывает функцию GetText для того, что бы скопировать содержимое во временную переменную. Следующим шагом создается новая временная переменная AnsiString, которая инициализируется строкой “!!!!!!”. В заключение компилятор вызывает оператор += и соединяет две строки. Результат сохраняется в первой переменной. Проблема в том, что компилятор не генерит код, который бы записал полученный результат обратно в Caption Автор ответа: команда http://www.bcdev.com/articles/suggest.htm Вольный пересказ PS переcказчика. Оператор += и прочие не работают со свойствами тогда, когда в качестве атрибута read свойства указана функция.
Но во избежание неприятностей, по моему, лучше не использовать такие операции применительно к свойствам. |