Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2010, 18:07   #1
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию Access violation at address 73F0AC38 in module 'comctl32.dll'

Здравствуйте! При использовании компонента TTreeView и этого кода:

Код:
procedure ExchangeNodes(TreeView: TTreeView; Node1, Node2: TTreeNode);
var
  N1, N2: TTreeNode;
  M1, M2: TNodeAttachMode;
begin
  if (Node1 = nil) or (Node2 = nil) then
     Exit;
  M1 := NAInsert;
  N1 := Node2.GetNextSibling;
  if N1 = nil then
     if Node2.Parent <> nil then
     begin
        M1 := NAAddChild;
        N1 := Node2.Parent;
     end
     else
        M1 := NAAdd;
  M2 := NAInsert;
  N2 := Node1.GetNextSibling;
  if N2 = nil then
     if Node1.Parent <> nil then
     begin
        M2 := NAAddChild;
        N2 := Node1.Parent;
     end
     else
        M2 := NAAdd;
  Node1.MoveTo(N1, M1);
  Node2.MoveTo(N2, M2);
end;

procedure TBox.UpButtonClick(Sender: TObject);
var
  N1, N2: TTreeNode;
begin
  try
  if TreeView1.Selected.Index = -1 then
     Exit;
  N1 := TreeView1.Selected;
  N2 := TreeView1.Selected.GetPrevSibling;
  if N2 = nil then
     Exit;
  if N1.Parent = N2.Parent then
     ExchangeNodes(TreeView1, N1, N2);
  except
  end;
end;
Который перемещает узлы в дереве, иногда (не всегда) появляется данная ошибка, с чем это может быть связано ?
RIO вне форума Ответить с цитированием
Старый 22.09.2010, 18:15   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Данная может означать, например, что происходит попытка обращения к несуществующему объекту, который быть может еще не создан. Такая шняга часто встречается при работе с такими компонентами как TreeView, ListBox, StatusBar. Если неправильно с ними работать.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.09.2010, 18:24   #3
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

А можно как-то эту ошибку перехватить ?
RIO вне форума Ответить с цитированием
Старый 22.09.2010, 19:11   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я через try...except on EAccessViolation do... делал
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.09.2010, 09:00   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рекомендую:
Код:
procedure TBox.UpButtonClick(Sender: TObject);
var
  N1, N2: TTreeNode;
begin
 TreeView1.Selected=nil then exit;
...
Может у тебя ничего не выбрано
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 16:29   #6
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Спасибо Вам Думаю поможет
RIO вне форума Ответить с цитированием
Старый 23.09.2010, 16:37   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Надеемся, что поможет . Ты не первый кто задает этот вопрос.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation at address in module. inkubus Общие вопросы Delphi 11 25.04.2013 19:15
access violation at address 0082a534 in module 'vcl70.bpl' Alla_ad Помощь студентам 0 04.05.2010 09:40
Access violation at address 00478D0E in module 'Project1.exe'. Write of address 00000000 fondreykus-1 Общие вопросы Delphi 5 27.01.2010 14:25
Access violation at address 00456215 in module Autorun.exe. alexandrov28 Свободное общение 4 30.09.2009 21:41
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Fen1x Общие вопросы Delphi 8 13.10.2007 20:13