Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему иногда не срабатывает  оператор += с AnsiSt, Ошибки компилятора 
:(
    Опции темы
Vyacheslav
Дата 29.5.2002, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Оператор += не срабатывает , если он применен не просто к переменной, а свойству (property) класса.

Код

AnsiString Temp = Label1->Caption;

//это не сработает
Label1->Caption += “!!!!!!”;

//а это отработает нормально
Temp += “!!!!!!”;
Label1->Caption = Temp;


Когда Вы используете оператор += для свойства Caption, компилятор генерит код, который создает новую временную переменную AnsiString. Затем компилятор вызывает функцию GetText  для того, что бы скопировать содержимое во временную переменную. Следующим шагом создается новая временная переменная AnsiString, которая инициализируется строкой “!!!!!!”. В заключение  компилятор вызывает оператор += и соединяет две строки. Результат сохраняется в первой переменной. Проблема в том, что компилятор не генерит код, который бы записал полученный результат обратно в Caption

Автор ответа: команда TeamB

Вольный пересказ :) :Вячеслав Ермолаев.
PS переcказчика. Оператор += и прочие не работают со свойствами  тогда, когда в качестве атрибута read свойства  указана функция.
Код

//здесь оператор += не сработает
property AnsiString NoWorking = {read = GetNotWorking, write = SetNotWorking }
//здесь оператор += сработает
property AnsiString Working = {read = FWorking, write = SetWorking }


Но во избежание неприятностей, по моему, лучше не использовать такие операции применительно к свойствам.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0377 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.