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
пол дня убил на это |
|