0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 13
1

Ошибка "Access violations at address . in module Project1.exe ." Как обнаружить/устранить?

23.04.2018, 00:27. Показов 2429. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Пишу прогу которая будет делить многочлен на многочлен...
Все вродебы ничего, алгоритм отточил, работает в 95% случаях )) Но столкнулся с данной проблемой при нахождении остатка от деления: "Access violations at address 00460E91 in module Project1.exe 00000000". Причем ответ то программа мне выводит верный, но эта ошибка...

Есть предположение что в переменные которые я объявил Integer записывается слишком длинное число..
P.S Как нибудь можно обнаружить место этой ошибки? или узнать какая переменная неправильно себя ведет?


код программы (сама кнопка "Деления"):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
procedure TForm3.btn4Click(Sender: TObject);
 var d10 : Real; kk,h,j,j1,z : Integer;
  begin
  edt4.Text := edt1.Text;
  j1 := k - b;   
  j := j1;
   for h := b+1 to k do
   begin
    edt6.Text := edt6.Text + edt1.Text[h];
     end;   
    for z := 1 to j1 do
   begin
    edt4.Text := edt4.Text + edt1.Text[z];
     end;
   while k >= b do
   begin
    begin
    i := 1;
    l := 0;
    while i < k do
    if strtoint ( edt4.Text[i] ) <> strtoint (edt2.Text[i] )
    then begin l := i; i := k+1; end
     else begin i := i+1;j := j+1; end;
         l2 := l + b - 1;
         if l2>k then l2 := k;
      for l1 := l to l2 do
    if l1 > b then  else
      if strtoint( edt4.Text[l1] ) = strtoint( edt2.Text[l1] ) then edt5.Text := edt5.Text+'0' else edt5.Text := edt5.Text+'1';
     end;
    edt4.Text := edt5.Text;
    edt5.Clear;
    d10 := StrToFloat(edt4.Text);
    begin
      kk := 0;
       while d10 >= 1 do
      begin
       d10 := d10 / 10;
       kk := kk + 1;
       end;
       end;
    k := kk;
     while ( k < b ) and ( j > 0 ) do
     begin
     edt4.Text := edt4.Text + edt6.Text[1];
     k := k + 1;
     j := j - 1;
      if j < 2 then j := 0 else
     edt6.Text := Copy(edt6.Text,2,length(edt6.Text)-0);
     end;
   end;
   end;
Еще есть глобальные переменные которые участвуют во всем этом ( я подозреваю что ошибка из-за этого ):
( d12, k, b )
Delphi
1
2
  d12, d11 : Real;
  km, d121, l1, l2, l, j, i, k, k1, p0, p11, b : Integer;
Интересно то, что если запустить просто exe то ответ сосчитает верный и покажет ошибку, а если через run ( в Delphi ) то ошибка в строке №44 :

Delphi
1
edt4.Text := edt4.Text + edt6.Text[1];
P.S В программировании я новичек, прогу пишу для собственных нужд, не судите строго. )) Буду очень благодарен и признателен если вы что-нибудь мне подскажете, или поможете по данной проблеме)
Миниатюры
Ошибка "Access violations at address . in module Project1.exe ." Как обнаружить/устранить?  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2018, 00:27
Ответы с готовыми решениями:

Ошибка: Access violation in address 005a837b in module "Project1.exe"
Здравствуйте. При открытии второй формы появляется сообщение &quot;Access violation in address 005a837b...

Ошибка Access violation at address 00407DF0 in module "Project1.exe"
Делал программу на 7-ом Delphi, потом запустил через 10-й Delphi, и при выборе года в ComboBox1 на...

Ошибка: access violation at address 0045fd9b in module project1.exe read of address 00000000
при выполнении программы дает ошибку access violation at address 0045fd9b in module project1.exe....

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 007B90DA in module 'Project1.exe'...
При нажатии кнопки &quot;Добавить запись&quot; должна показываться вторая форма, вместо этого ошибка ...

7
пофигист широкого профиля
4662 / 3096 / 855
Регистрация: 15.07.2013
Сообщений: 17,848
23.04.2018, 02:10 2
Приложите архив с проектом к сообщению. Тогда будет проще вам помочь.
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
23.04.2018, 08:44 3
Цитата Сообщение от Kodimrus Посмотреть сообщение
Есть предположение что в переменные которые я объявил Integer записывается слишком длинное число..
Объявляйте их как Int64.
У вас в коде встречаются строки
Delphi
1
edt4.Text := edt4.Text + edt1.Text[z];
Вы уверены, что длина текста в edit1 в пределах этого z? Может у вас текста 3 символа, а вы обращаетесь, например, к пятому. Ясное дело будут ошибки.
0
1436 / 1013 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
23.04.2018, 09:57 4
TFullControl, не совсем так...
Вот где это встречается:
Цитата Сообщение от Kodimrus Посмотреть сообщение
Delphi
1
2
3
4
for z := 1 to j1 do
begin
  edt4.Text := edt4.Text + edt1.Text[z];
end;
А j1 отсюда:
Цитата Сообщение от Kodimrus Посмотреть сообщение
Delphi
1
j1 := k - b;
А так как k, b : Integer; - глобалки, то присоединяюсь к совету northener. Ибо только ТС знает, что пихает туда.
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
23.04.2018, 10:01 5
Matan!, Так об этом и речь. Все Так!
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 13
23.04.2018, 22:56  [ТС] 6
Matan!, northener, Только только добрался до компа) вот архив с проектом.
Делимое и делитель я взял из примера, значения уже вписал в соотв. эдиты, ответ должен получится 1110


изменил тип переменных с integer на int64 :
Delphi
1
[Fatal Error] Unit3.pas(137): Internal error: C1091
процесс выглядит примерно так:
Миниатюры
Ошибка "Access violations at address . in module Project1.exe ." Как обнаружить/устранить?  
Вложения
Тип файла: rar prog.rar (190.6 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 13
24.04.2018, 22:33  [ТС] 7
Всем спасибо, кто откликнулся) Проблема была в том, что переменная принимала неадекватное значение и цикл выходил за свои пределы. Перелопатив код и все перепроверив я нашел эту ошибку)))
0
1436 / 1013 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
25.04.2018, 03:57 8
Цитата Сообщение от Kodimrus Посмотреть сообщение
Всем спасибо, кто откликнулся)
Всегда пожалуйста. Вот только архив Вы бесполезный приложили. Нафига нам Ваш ехе-шник и прочий мусор? Следовало приложить вместе с *.dpr pas- и dfm-файлы. А так никакого кода увидеть невозможно..
Цитата Сообщение от Kodimrus Посмотреть сообщение
переменная принимала неадекватное значение
Значит, Вы не инициализировали её, вот и мусор в ней восьмизначный..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2018, 03:57
Помогаю со студенческими работами здесь

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0045DC8E in module 'Project1.exe'. Write of ad'
Всем доброго времени суток, у меня возникла вот такая проблема, после компиляции проекта, при...

Access violation at address 0040437C in module 'Project1.exe'. Read of address 00000004
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Ошибка при компиляции "Access vilation at address 0066142A on module 'styler.exe'. Read of adress 000000D4"
При запуске программы выскакивает такая ошибка: http://i.**********/VCczaHC.png Программа была...

Access violation at address 0046a176 in module project1.exe
Появилась недавно ошибка ругается вроде бы на 12 форму пробовал удалить 12 форму тогда начало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru