![]() |
#1 |
Учаснег
|
НОВЫЙ КОНКУРС
Здравствуйте все!
У меня возникло желание повторить "игру" ![]() На этот раз вопрос будет из области программирования - но такой же хитрый-прехитрый ![]() Так как на прошлый вопрос ответ был дан очень быстро - теперь мы играем в несколько раундов, в ПЯТЬ. По итогам каждого раунда участникам будут начисляться очки от 1 до 10, в зависимости от степени "правильности", "глубины" и "скорости". Победит, соответственно, тот, кто наберет очков больше всех. Все оценки и все судейство - сугубо субъективное, так что не обессудьте ![]() Насчет приза пока идей никаких нету, но обещаю к пятому раунду че нибудь придумать ![]() Итак. Имеем некоторый класс, который вызывает простую форму: Редактируемое поле типа real, редактируемое поле типа boolean в виде чекбокса, кнопочка ОК. Все. Оба поля связаны с переменными, созданными в классе (не с базой данных). Пользователь вводит данные в редактируемое поле типа real, делает check либо uncheck поля boolean - нажимает кнопочку. В результате должны происходить некоторые действия (какие - не суть важно), причем если чекбокс "включен" - то логика будет одна, а если "выключен" - то другая. Как вы понимаете, в результате оно работает совсем не так, как задумывалось ![]() Вот список методов этого класса: - ClassDeclaration (здесь обе переменные описаны) - класс extends RunBase - dialog - описание формы, инициализация полей формы. - getFromdialog - инициализация переменных измененными значениями полей формы - canSweepBetweenCS - возвращает всегда true - pack - unpack - parmRealValue - parmBooleanValue - construct - main - new - description Вопрос - каковы возможные причины данного поведения? Что может быть не так? Чего в супе не хватает? Пока не привожу специально сам текст кода - это будет существенной подсказкой, приберегу ее на тот случай если никто не догадается ![]() P.S. Да, еще, ежели кто имеет еще какие вопросы на конкурс - тоже размещайте ![]()
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#2 |
сибиряк
|
а можно все-таки посмотреть код метода ClassDeclaration,
в честности то что относится к перечислению переменных для "упаковки и распаковки". И еще хотелось бы знать чего там хранится в таблице SysLastValue для строки с типом recordType = Class и elementName = имя_Класса в поле Value?
__________________
С уважением, Вячеслав. |
|
![]() |
#3 |
----------------
|
Ошибок можно наваять сколько угодно - все зависит от фантазии
![]() Есть подозрение, что boolean переменная называется canSweepBetweenCS, а при обработки для выбора ветви вместо переменной используется вызов метода canSweepBetweenCS()... хотя я таких ошибок еще не встречал |
|
![]() |
#4 |
Участник
|
А значение-то чек-бокса считывается в значение переменной? И в каком месте ветвление происходит и как (в классе или дочерней форме) и, главное когда?
А какие могут быть ошибки... Я знаю несколько видов ошибок: 1. забыл написать 2. написал, но не то 3. написал но не там 4 написал лишнее Перемножте это на 12 методов в классе и получите возможные варианты ошибок ![]() |
|
![]() |
#5 |
Учаснег
|
Здравствуйте все!
Очень рад, что Вы так активно участвуете ![]() ![]() Отвечаю всем по порядку. Vladislav, Значение чек-бокса - считывается в переменную! Если б все было так просто, я бы и вопрос не стал задавать ![]() Ветвление происходит в методе run этого класса. Буквально, run НАЧИНАЕТСЯ с условия if(BooleanValue)... wamr, Вариант с CanSweep интересный - но фишка в том, напомню, что неправильно обрабатывается ТОЛЬКО переменная BooleanValue. А в если б дело было в вызове CanSweep, я полагаю, обе бы переменные считались не так (впрочем, это лишь моя версия...). К тому же, как отмечено, CanSweep возвращает всегда тру, то есть это просто заглушка ![]() slava, Вот код: PHP код:
Жду дальнейших вопросов!
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#6 |
Участник
|
Ты забыл внести в паковку твой Boolean, и похоже разрешив "протягивание между клиентом - сервером" данных canSweepBetweenCS ты теряешь полученное значение. Данная фишка будет только на 3-х уровневой Аксапте в 2-х должно работать все нормально
![]() |
|
![]() |
#7 |
сибиряк
|
остается только порадываться, что своим вопросом я подтолкнул ответ
![]() Слава, привет !
__________________
С уважением, Вячеслав. |
|
![]() |
#8 |
Учаснег
|
Правильные ответы будут опубликованы завтра, 17 января
![]()
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#9 |
Учаснег
|
РЕЗУЛЬТАТЫ ПЕРВОГО ТУРА
Итак,
Как я ни запутывал, как я ни старался - правильный ответ был дан ![]() Однако, Vladislav не был первым правильно ответившим! Ибо до него эту идею начал первым развивать slava! (У меня, кстати, зародились поначалу подозрения, что это один и тот же человек - так что вы уж выбирайте пожалуйста ники "поотличительней" ![]() Таким образом, после длительного совещания ![]() - Slava - 9 - Vladislav - 8 Еще раз поздравляю! На этом первый тур считаем закрытым. Вопросы второго размещу в понедельник. Кстати, если у кого-то появились свои вопросы - еще раз МИЛОСТИ ПРОСИМ!!!! Всем привет!
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#10 |
----------------
|
![]()
Вопрос - ответы вида "Согласен с предыдущим оратором" засчитываются?
![]() |
|
![]() |
#11 |
Учаснег
|
Засчитываются, но очки за них не начисляются
![]() Очки начисляются, только если были высказаны СВОИ мысли - хотя бы и в дополнение к правильному ответу.
__________________
Strictly IMHO & nothing personal ![]() |
|
![]() |
#12 |
Участник
|
Уважаемые Господа!
Внесу и я свои 5 центов... Ошибка УЖ ТОЧНО не в том, что realValue пакуется, а booleanValue - нет. В этом случае просто не будет сохраняться последнне значение - и все. Ошибка могла возникнуть в кривой компилляции класса. В таких случаях обычно помогает инкрементарная компилляция. Ради хохмы смоделировал ситуацию. Объект создается на сервере, а сама проверка условия - на клиенте. Налицо "протягивание кода сервер -> клиент". Пакуется одно realValue. Однако, все значения возвращаются корректно. Уважаемый AKIS: дай более детальное описание ошибки.
__________________
С уважением, Андрей Беседин |
|
![]() |
#13 |
Banned
|
Пять центов не котируются, ошибка именно во взаимодействии клиент-сервер для наследников RunBase. В соответствии с шаблоном удаленных вызовов Axapta создает два экземпляра - один на клиенте и один на сервере. Пользователь работает с диалоговым окном на клиентской машине. После отработки prompt() для передачи всех параметров класс сериализуется методами pack() и unpack() (должны запаковываться все переменные, определяющие состяние объекта) и полученный контейнер передается серверному представителю RunBase.
|
|
![]() |
#14 |
Смотрящий поверх деревьев (Варварский отморозок)
|
Вот еще про протаскивание данных между клиентом и сервером
<Зохавано мудератором>
за неуплату
__________________
It's a dirty job, but someone's got to do it. So? |
|