02.11.2010, 08:58 | #1 |
Участник
|
Set.Remove, валится клиент
Здравствуйте, может кто нибудь знает? Валится клиент на строке кода:
X++: transCreditSet.remove(transRecId); AX 4.0
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 09:14 | #2 |
Участник
|
Возможно тип значения в методе remove() и тип значений множества (Set(Types _type)) не совпадает, либо transRecId имеет слишком большое/малое(отрицательное) значение, которое выходит за диапазон указанного при инициализации множества типа данных.
__________________
С уважением, Александр. |
|
02.11.2010, 10:57 | #3 |
Участник
|
Типы и значения совпадают.
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 11:09 | #4 |
северный Будда
|
transRecId удаляемый вообще есть в сете? Может, вы пытаетесь удалить то, чего нет?
__________________
С уважением, Вячеслав |
|
02.11.2010, 11:10 | #5 |
Участник
|
есть
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 11:13 | #6 |
Участник
|
в любом случае метод remove() должен выполняться, т.к. он возвращает true или false в зависимости от наличия удаляемого элемента.
Какой тип у вашего множества?
__________________
С уважением, Александр. |
|
02.11.2010, 11:14 | #7 |
Участник
|
тип RecId
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 11:16 | #8 |
Участник
|
Я имею ввиду его инициализацию:
X++: Set set = new Set(Types:: );
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 02.11.2010 в 11:19. |
|
02.11.2010, 11:18 | #9 |
Участник
|
Цитата:
X++: transCreditSet = new Set(typeId2Type(typeid(recId)));
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 11:18 | #10 |
северный Будда
|
Несовпадение типов валило бы ещё на этапе заполнения сета
__________________
С уважением, Вячеслав |
|
|
За это сообщение автора поблагодарили: kornix (1), samolalex (1). |
02.11.2010, 11:19 | #11 |
Участник
|
Я сделал поправку в сообщении, список поддерживаемых множеством типов видны через Types::
Попробуйте types::Integer - базовый тип для RecId
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 02.11.2010 в 11:23. |
|
02.11.2010, 11:21 | #12 |
MCP
|
Не уверен, но попробуйте удалить файлы *.aoc в папке %user%\AppData\Local\Application data
Такой подход обсуждался тут, но клиент падал при другой операции. В папке с приложением \Appl\<Имя приложения> попробуйте удалить файлы *.ali *.aoi *.alt *.ahi *.khi *.udb *.add *.adi P.S. Надеюсь приложение тестовое или разработческое? |
|
02.11.2010, 11:44 | #13 |
Участник
|
Цитата:
Сообщение от kornix
Не уверен, но попробуйте удалить файлы *.aoc в папке %user%\AppData\Local\Application data
Такой подход обсуждался тут, но клиент падал при другой операции. В папке с приложением \Appl\<Имя приложения> попробуйте удалить файлы *.ali *.aoi *.alt *.ahi *.khi *.udb *.add *.adi P.S. Надеюсь приложение тестовое или разработческое?
__________________
Лучше сделать и жалеть, чем жалеть что не сделал |
|
02.11.2010, 11:46 | #14 |
MCP
|
|
|
|
За это сообщение автора поблагодарили: samolalex (1). |
02.11.2010, 11:47 | #15 |
Участник
|
А вы пробовали просмотреть содержимое множества через
info(transCreditSet.toString()); И какое значение содержится в transRecId в момент удаления, ради опытного интереса
__________________
С уважением, Александр. |
|
02.11.2010, 11:47 | #16 |
Участник
|
Хорошая идея, также можно попробовать почистить кэш...
__________________
С уважением, Александр. |
|
|
За это сообщение автора поблагодарили: kornix (1). |
02.11.2010, 12:17 | #17 |
Moderator
|
Небольшая поправка: в 4ке и выше для RecId используется Types::Int64.
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: kornix (3), samolalex (1). |
|
|