C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Что это за глюк, Обошел, но не понял
Nick
Отправлено: 25.02.2005, 12:07


Машинист паровоза

Группа: Участник
Сообщений: 247



AnsiString A;
// функция

/*1*/ A = "Значение1"

/*2*/
вызов PopupMenu в обработчике
A = "Значение2"

/*3*/ использование A по назначению

-----------------------------------------------------------------
В результате получаю по полной

2 пункт выполняется A — меняется но в 3 пункте A = "Значение1"

Ладно ставлю ShowMessage
получаю
между 1-2 A = "Значение1"
между 2-3 A = "Значение1"
в пункте 3 A = "Значение2"

Убираю ShowMessage между 2-3
в пункте 3 A = "Значение1"

Спасло положение вставка
Application->ProcessMessages();

почему блин
AnsiString долбанный не сразу принимает значения ???

НЕ ПОНИМАЮ









Nick
Отправлено: 25.02.2005, 12:10


Машинист паровоза

Группа: Участник
Сообщений: 247



поясняю немного странную функцию

пользователь вносит наименование детали (автозапчасть)

программа ищет в строке марку и модель
если находит марку уточняет модель и далее
ищет в справочнике номенклатуры и автокаталоге
Asher
Отправлено: 25.02.2005, 13:25


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
Никогда с таким не сталкивался.
Но может спецификатор volatile поможет?
AVC
Отправлено: 25.02.2005, 13:56


Ветеран

Группа: Модератор
Сообщений: 1583



Если правильно понял.
Эффект имеет место быть при использовании Popup в конструкции вида
ppm->Popup(x, y);
Application->ProcessMessages();
Вторая строчка легальный и, кажется, единственный способ обхода. Сейчас точно сказать не могу (разбирался лет 5 назад) как то связано с зацикленностью события опроса меню. С тех пор взял за правило писать только так.
Nick
Отправлено: 25.02.2005, 14:39


Машинист паровоза

Группа: Участник
Сообщений: 247



точно есть Popup( x, y );

ну вот отлегло,
значит не везде выкидывать AnsiString

пол дня убил на это

Вернуться в Вопросы программирования в C++Builder