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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 16:04   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Ошибка с модулем ntdll.dll. Нужно разобраться.

Что за ошибка, что она значит?

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 7C91B1FA in module 'ntdll.dll'. Write of address 000F001F'. Process stopped. Use Step or Run to Continue.

Что нужно исправить?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 07.10.2011, 16:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Пытаетесь записать в невыделенную/недоступную память. Проверяйте создание объектов, выделение памяти для массивов и т.д.
p51x вне форума Ответить с цитированием
Старый 07.10.2011, 16:27   #3
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Код:
procedure TForm1.ScanTools;
var
  axq, ayq: word;
begin
  ProgressBar1.Position:= 0;
  ProgressBar1.Max:= Image1.Height;
  for ayq:= 0 to Image1.Height do
    begin
      ProgressBar1.Position:= ayq;
      for axq:= 0 to Image1.Width do
        case Image1.Canvas.Pixels[axq, ayq] of
          $000000: field[axq, ayq]:= 1;
          $000001: field[axq, ayq]:= 2;
          $000002: field[axq, ayq]:= 3;
          $000003: field[axq, ayq]:= 4;
          $000004: field[axq, ayq]:= 5;
          $000005: field[axq, ayq]:= 6;
          $000006: field[axq, ayq]:= 7;
          $000007: field[axq, ayq]:= 8;
          $000008: field[axq, ayq]:= 9;
          $000009: field[axq, ayq]:= 10;
          $000010: field[axq, ayq]:= 11;
          $010000: field[axq, ayq]:= 12;
          $020000: field[axq, ayq]:= 13;
          $030000: field[axq, ayq]:= 14;
          $040000: field[axq, ayq]:= 15;
          $050000: field[axq, ayq]:= 16;
          $060000: field[axq, ayq]:= 17;
          $070000: field[axq, ayq]:= 18;
          $080000: field[axq, ayq]:= 19;
          $090000: field[axq, ayq]:= 20;
          $100000: field[axq, ayq]:= 21;
          $000100: field[axq, ayq]:= 22;
          $000200: field[axq, ayq]:= 23;
          $000300: field[axq, ayq]:= 24;
          $000400: field[axq, ayq]:= 25;
          $000500: field[axq, ayq]:= 26;
          $000600: field[axq, ayq]:= 27;
          $000700: field[axq, ayq]:= 28;
          $000800: field[axq, ayq]:= 29;
          $000900: field[axq, ayq]:= 30;

          $001000: field[axq, ayq]:= 31;
          $001100: field[axq, ayq]:= 32;
          $001200: field[axq, ayq]:= 33;
          $001300: field[axq, ayq]:= 34;
          $001400: field[axq, ayq]:= 35;
          $001500: field[axq, ayq]:= 36;
          $110000: field[axq, ayq]:= 37;
          $120000: field[axq, ayq]:= 38;
          $130000: field[axq, ayq]:= 39;
          $140000: field[axq, ayq]:= 40;
        end;
    end;
  mk:= 0;
end;
Во время выполнения цикла case ... of при трассировке не могу отследить на какой именно строке, но скажу сразу: в зависимости от анализируемой картинки, код иногда выполняется полностью.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 07.10.2011, 16:32   #4
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

а для массива field выделено столько скока надо памяти?
devote вне форума Ответить с цитированием
Старый 07.10.2011, 16:39   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от devote Посмотреть сообщение
а для массива field выделено столько скока надо памяти?
Массив же не динамический, а статический. Вроде память под него уже выделена.
даешь высокое напряжение

Последний раз редактировалось Vova777; 07.10.2011 в 16:41.
Vova777 вне форума Ответить с цитированием
Старый 07.10.2011, 17:07   #6
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

Ну тогда сложно сказать где у вас ошибка закралась, по листингу что вы привели ошибок других не должно быть. Единственное что может придти в голову, дык это может объект Image1 у вас раньше времени очищается из памяти или еще чего либо... Без полного исходника сложно что-то сказать.
devote вне форума Ответить с цитированием
Старый 07.10.2011, 18:34   #7
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

В общем докопался вот до чего. В окне с предупреждением жму Ок, потом кнопку в Делфи Run, после чего открывается вкладка CoolTrayIcon и там ошибка на следующей строке:
Код:
{
  case Msg.Msg of
    WM_QUERYENDSESSION: begin
      Msg.Result := 1;
    end;
  else
}
    // Pass the message on  //ОШИБКА ЗДЕСЬ, ТОЧНЕЕ НА СТРОЧКЕ НИЖЕ
    Msg.Result := CallWindowProc(OldWndProc, (Owner as  TWinControl).Handle,
                  Msg.Msg, Msg.wParam, Msg.lParam);  
{
  end;
}
Я что-то не пойму ничего.
даешь высокое напряжение

Последний раз редактировалось Vova777; 07.10.2011 в 18:37.
Vova777 вне форума Ответить с цитированием
Старый 07.10.2011, 18:47   #8
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Код:
for ayq:= 0 to Image1.Height - 1 do
    begin
      ProgressBar1.Position:= ayq;
      for axq:= 0 to Image1.Width - 1 do

Последний раз редактировалось Silver_S; 07.10.2011 в 18:50.
Silver_S вне форума Ответить с цитированием
Старый 07.10.2011, 18:48   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

1.var axq, ayq: word; советую записать var axq, ayq: integer;
2. размерность массива field должна быть axq+1, ayq+1 или циклы должны иметь следующие диапозоны
Код:
 for ayq:= 0 to Image1.Height-1 do
    begin
      ProgressBar1.Position:= ayq;
      for axq:= 0 to Image1.Width-1  do
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 07.10.2011, 18:48   #10
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Silver_S Посмотреть сообщение
Код:
for ayq:= 0 to Image1.Height - 1 do
    begin
      ProgressBar1.Position:= ayq;
      for axq:= 0 to Image1.Width - 1 do
так уже пробовал, нет результата никакого, поэтому и не изменил
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с ntdll.dll koolich Общие вопросы Delphi 2 06.03.2010 01:37
Имя модуля с ошибкой ntdll.dll valerij Windows 1 29.11.2009 23:42
сообщение об ошибке ntdll.dll trech85 Общие вопросы Delphi 4 12.12.2008 14:29
Ошибка в ntdll.dll mutabor Общие вопросы Delphi 1 24.06.2008 14:55