Windows 7, GET по очереди, POINTER и PUT

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Windows 7, GET по очереди, POINTER и PUT

Сообщение Admin »

В неопределенной ситуации код работает неправильно.
Именно под Windows 7 со всеми обновлениями. Windows Xp и Win Server 2008 все OK!
Clarion 6.3 9058

Код: Выделить всё

...
  Queue:Browse.GoodsID = 123
  GET(Queue:Browse, Queue:Browse.GoodsID)
  IF NOT ERRORCODE()
    MESSAGE(POINTER(Queue:Browse)) !  = 0 !!!
    Queue:Browse.XXX = YYY
    PUT(Queue:Browse)
    MESSAGE(ERRORCODE())           !  = 30 !!!
  END
...
В печали! :evil:
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Губин Игорь »

1 (глупый вопрос): а сортировка выполнена?
2 (перестраховочное): а PUT(Queue:Browse, Queue:Browse.GoodsID) не стоит применить?
Это я только кажусь дураком! На самом деле я полный идиот!
kreator
✯ Ветеран ✯
Сообщения: 4981
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение kreator »

Вообще, странно. Может надо очередь сортирнуть по GoodsID. Я сталкивался с некими проблемами, если предварительно не сортирнуть. И, действительно, ошибку не поймать, похоже.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Admin »

Губин Игорь писал(а):1 (глупый вопрос): а сортировка выполнена?
нет. очередь бровза MAV. не стоит ее сортировать.
2 (перестраховочное): а PUT(Queue:Browse, Queue:Browse.GoodsID) не стоит применить?
это не пробовал. попробую.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Admin »

kreator писал(а):Вообще, странно. Может надо очередь сортирнуть по GoodsID. Я сталкивался с некими проблемами, если предварительно не сортирнуть. И, действительно, ошибку не поймать, похоже.
Основной момент что все на других версия винды стабильно работает а на Win 7 стабильно не работает!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Губин Игорь »

Admin писал(а):нет. очередь бровза MAV. не стоит ее сортировать.
Вот в этом и может прятаться Маккейн!
Правильно гет работает только при предварительно выполненной сортировке или когда все add и put выполняются с указанием сортировки.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Губин Игорь »

Admin писал(а):Основной момент что все на других версия винды стабильно работает а на Win 7 стабильно не работает!
Ты же не знаешь, что там внутри мав творится. Может как-то специфично обрабатывается.

Могу посоветовать обходной путь через задницу:
Вариант 1: полный проход по всей очереди для поиска
Вариант 2: делаешь промежуточную очередь со ссылками на основную, её сортируешь, а потом правишь нужную запись в основной.

Кстати, Варинат 2 будет и хорошей проверкой на правильность моего предположения.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Дед Пахом »

Что-то мне кажется, дело в другом, и не надо искать обходные пути. Код прост как три копейки: при успешном GET(q, q.id) немедленный POINTER(q) возвращает 0, что есть нонсенс. Никто эту очередь в другом потоке не дёргает?
С уважением, ДП
FinSoft
Посетитель
Сообщения: 49
Зарегистрирован: 21 Ноябрь 2006, 13:37

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение FinSoft »

Губин Игорь писал(а):
Admin писал(а):нет. очередь бровза MAV. не стоит ее сортировать.
Вот в этом и может прятаться Маккейн!
Правильно гет работает только при предварительно выполненной сортировке или когда все add и put выполняются с указанием сортировки.
Привет, Игорь. Это не совсем так. Если делается гет по другому порядку сортировки, то кларион автоматически строит дополнительный ключ. Так в доке было прописано. По моему опыту проблема может возникнуть при неуникальных значениях в поле, по которому делается гет. Если гет по полю с идентификатором записи, то все работает пучком, независимо от сортировки. Совсем недавно сталкивался.
По сабжу лучше вначале сделать чистый эксперимент - сформировать ручками отдельную очередь с подобной структурой, если работает как надо, попробовать запихать туда похожие значения. Андрей (Мялин) любит использовать нестандартные для клариона схемы, например, может записать в очередь не через add, а каким-нибудь виндовым api. Так хотя бы можно выяснить, откуда ноги растут.
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение seawolf »

Не помню подобных проблем у себя - особенно если id уникален. Но сам всегда автоматом делаю sort перед get при очередях обязательно. Интересно, а как такая конструкция поведет себя на восьмерке?
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Windows 7, GET по очереди, POINTER и PUT

Сообщение Admin »

Губин Игорь писал(а):2 (перестраховочное): а PUT(Queue:Browse, Queue:Browse.GoodsID) не стоит применить?
Всем спасибо за обсуждение. Этот вариант сработал!

Но тем не менее повторюсь, эта проблема есть только на Windows 7
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить