powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Исключение в MoveTo
25 сообщений из 83, страница 3 из 4
Исключение в MoveTo
    #39598385
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВысылать команды, например "Ноду с ID=xxxx переместить под ноду с ID=yyyy"

Какие конкретно ID?
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598414
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonвыполнение процедуры в основном потоке,
На баг никак не повлияло.

Ч.Т.Д.

21168555

Ariochпохоже иногда в переменной Session.NodeFields.RootNode оказывается указатель не на TNode (или что там должно быть), а на объект какого-то другого класса
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598415
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonКакие конкретно ID?

business domain

это уже тебе виднее, какие данные в твоей прикладной задаче позволяют уникально идентифицировать те или иные сущности
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598473
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

попробую пока что костыль:

автор if (Node is TTreeNode) and (Node2 is TTreeNode) then
Node.MoveTo(Node2, naAddChild);

посмотрим, как повлияет.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598516
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

тогда уж и логирование вставь
Код: pascal
1.
....else OutputDebugString(PChar('Оппаньки! ' + Node.ClassName + '  /  ' + Node2.ClassName + ^M^J) );



....но если там и вовсе не объект а какой-то просто мусор, то оно свалится на вызове ClassName

что, впрочем, тоже будет вполне себе результат.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598521
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а лучше еще и заложиться, что у тебя в разных модулях могут быть классы с одинаковым названием

http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TObject.QualifiedClassName

а если такого нет, то http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TObject.UnitName
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598525
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon, помимо прочего, в EurekaLog есть IsValidObject в ELowLevel.

Кстати, memory-функции EurekaLog используются? А то там есть очистка удаляемой памяти. Может, у тебя ссылка где-то на удалённый объект.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598542
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmokerА то там есть очистка удаляемой памяти

и он затирает минус единицами вместо какого-нибудь наглядно-вычурного DEADBEEF ?
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598577
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochи он затирает минус единицами вместо какого-нибудь наглядно-вычурного DEADBEEF ?

Нет, нулями или DEADBEEF в зависимости от настроек.

P.S. У меня стойкое ощущение, что -1 тесно связана с nil, но не могу вспомнить / сообразить, когда это бывает.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598586
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon, под отладчиков же воспроизводится???

Можно так:
Код: pascal
1.
2.
3.
4.
5.
6.
try
  RootNode.MoveTo(HistoryNode, naAddChild);
except
  DebugBreak;
  RootNode.MoveTo(HistoryNode, naAddChild);
end;



Отладчик встанет, можно будет и аргументы проанализировать и по шагам повторить.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598632
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker,

авторmakhaon, под отладчиков же воспроизводится???

увы, все разумные варианты завалить под отладкой ни к чему не привели. оно то и в жизни падает нечасто. но, увы, стабильно :(

В эврике включено catch memory problem и fill freed memory with zeros.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39598643
kep-ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon, https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to-simulate-cpu-memory-disk-load/

ps. вирусы, антивирусы, спец-софт-дрова на испытуемом есть?
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39599670
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kep-ko,

вирусы - крайне маловероятно. антивирус - nod32 и на 2003-м был и сейчас, на 2012 остался. вообще - то он как-то не замечен за пакостями. не думаю я на него.

Код: pascal
1.
IsValidObject



добавил в проверки. посмотрю, спасибо.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608434
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, нашли закономерность, когда падает. При логине по RDP или при переключении пользователей. Пробую ловить WM_WTSSESSION_CHANGE, временно отключать обработку дерева, потом включать назад. Увы, но не помогло. При включении почти сразу же валится с AV, как обычно. В разных местах на доступе к элементам дерева.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608469
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,
Я бы подумал в сторону изменения архитектуры а-ля MVC.
Привязка к спонтанно изменяемым структурам не есть хорошо в любом случае.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608489
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Врятли mvc поможет, если дерево тупо валится при смене юзера.
Удалось сделать минимальное приложение.
Воспроизведение бага: запускаем под отладкой. Сменяем пользователя на другого, обычным способом, заходим назад - получаем AV.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608493
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Среда - XE6, как уже писал. Версия операционки, скорее всего, особо значения не имеет.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608498
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonВрятли mvc поможет, если дерево тупо валится при смене юзера.

Валится не дерево, а твой код, который оперирует неустойчивыми параметрами вроде ItemID.
Просто работай с inmem-tree (типа XML) и пересоздавай его визуальное представление при модификациях.
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608499
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch_TrulyМеня в свое время СИЛЬНО ругали на Stack Overflow за передачу TForm.Handle в поток, хотя лёгкой практической альтернативы так и не предложили.

Если очень хочется передать TForm.Handle в поток, то это можно делать. Следует лишь понимать, что тогда в рантайме не нужно изменять некоторые свойства формы, которые приводят к RecreateWnd (например, BorderStyle).
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608505
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonСменяем пользователя на другого, обычным способом, заходим назад - получаем AV.

Т.е. выводим пользователи из interactive desktop - все окна (GDI objects) фактически уничтожаются

Входим обратно - создаются заново.

А дальше - что угодно, от левых HWND и до потерянных дополнительных байтов информации, привязанных к внутренним структурам Windows (всякие getWindowLong)

Предположение проверял?

Ariochпохоже иногда в переменной Session.NodeFields.RootNode оказывается указатель не на TNode (или что там должно быть), а на объект какого-то другого класса
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608506
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдчто тогда в рантайме не нужно изменять некоторые свойства формы

....через 3 года они покупают нвоую версию Delphi с частично переписанным VCL и....
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608510
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдArioch_TrulyМеня в свое время СИЛЬНО ругали на Stack Overflow за передачу TForm.Handle в поток, хотя лёгкой практической альтернативы так и не предложили.

Если очень хочется передать TForm.Handle в поток, то это можно делать. Следует лишь понимать, что тогда в рантайме не нужно изменять некоторые свойства формы, которые приводят к RecreateWnd (например, BorderStyle).

кое-что проверил, уточняю:

КвейдСледует лишь понимать, что тогда в рантайме не нужно изменять некоторые свойства формы, которые приводят к RecreateWnd (например, Parent).
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608514
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

У меня было предположение, что винда свои деревья во время перелогина или захода на rdp полностью или частично пересоздаёт. Ну ок, если так. Но сделать то что? :)
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608563
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) не смешивать данные и визуальные компоненты

2) поменять компонент дерева
...
Рейтинг: 0 / 0
Исключение в MoveTo
    #39608565
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Телепаты существуют! 21167771

Соколинский БорисСравнительно недавно обнаружил, что при пересоздании окна treeview все адреса node-ов меняются. Возможно, что-то такое имеет место.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 3 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Исключение в MoveTo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]