Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/98: Рейтинг темы: голосов - 98, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 30
1

Ошибка exception eaccessviolation in module

25.06.2012, 11:06. Показов 18059. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Товарищи подскажите в чем проблема!
запускаю программу все работает, но при закрытии ее вылетает ошибка "exception eaccessviolation in module...", и только после того как нажата именно 1 кнопка, если ее не нажимать то все в норме закрывается без ошибок,закрытие происходит через крестик без дополнительных процедур, обработчик события этой кнопки
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
procedure TMainForm.btnEx3Click(Sender: TObject);
begin
 Proizvodnie;
end;
//------------------------------------------------------
//  Задача 3.2  - Дифференцирование
//------------------------------------------------------
function TMainForm.Proizvodnie:real;
 
 
var
X:array of real;
Y:array of real;
D:array of real;
L:array of real;
M:integer;               // -  Число точек в таблице данных
D1,D2,D3:real;           // - значения правой, центральной и левой разноостей
h,s,r:real;
i,k:integer;
begin
h:=pi/90;
M:=StringGrid4.RowCount-1;
SetLength(y,M);
SetLength(x,M);
SetLength(d,M);
 
for i:=0 to M do
begin
r:=i*2;
y[i]:=sin(r*pi/180);
Stringgrid4.Cells[0,i+1]:=FloatToStr(R);
StringGrid4.Cells[1,i+1]:=FloatToStr(y[i]);
 
end;
d[0]:=(-y[2]+4*y[1]-3*y[0])/(2*h);
d[45]:=(3*y[45]-4*y[44]+y[43])/(2*h);
for i:=1 to m-1 do
begin
d[i]:=(y[i+1]-y[i-1])/(2*h);
StringGrid4.Cells[2,i+1]:=FloatToStrF(d[i],ffFixed,7,5);
end;
with StringGrid4 do
begin
Cells[2,1]:=FloatToStrF(d[0],ffFixed,7,5);
Cells[2,m]:=FloatToStrF(d[m],ffFixed,7,5);
end;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2012, 11:06
Ответы с готовыми решениями:

Ошибка Exception EOSError in module .... System error. Code: 1400. Invalid window handle.
Доброе время суток! Я использовал поток в приложении CreateThread().. Примерно такая струкура...

вылетает ошибка Exception EOleSysError in module PR_KVR.exe at 0005280D. Класс не лицензирован для использования.
Доброго времени суток! Столкнулся с проблемой переноса программы, на другом компе не хочет...

Ошибка после компиляции "Exception EClassNotFound" in module Con.exe at 000B1232
Возникла ситуация. Учусь в магистратуре ИТфакультета но программировать не умею вообще, не...

Project Project1.exe raised exception class EAccessViolation
Всем привет. Помогите решить ошибку Project Project1.exe raised exception class EAccessViolation...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
25.06.2012, 11:57 2
Цитата Сообщение от Wild Heart Посмотреть сообщение
все работает
Не очень верится. Вот тут:
Delphi
1
2
3
4
5
for i:=1 to m-1 do
begin
d[i]:=(y[i+1]-y[i-1])/(2*h); // <--- Вот в этом месте
StringGrid4.Cells[2,i+1]:=FloatToStrF(d[i],ffFixed,7,5);
end;
будет вылет. Потому что при i = M-1 ты пытаешься обратиться к Y[M], а такого элемента в массиве не существует. Есть только от 0 до M-1. В настройках компилятора включи контроль границ и узнаешь много интересного Исправляй эту ошибку. Ну, и заодно, неплохо было бы освобождать память, выделенную через SetLength.

А вот тут:
Delphi
1
2
3
4
for i:=0 to M do
begin
r:=i*2;
y[i]:=sin(r*pi/180); // <--- ты мало того, что вылезаешь за пределы массива ...
, так еще и пишешь куда-то значение. Это может вылезти потом в любом месте: перезаписал что-то "левым" значением, потом, при закрытии формы, оно тебе аукнулось. Так что все индексы перепроверяй.
1
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 30
25.06.2012, 12:18  [ТС] 3
вычисления проходят и проходят правильно!
контроль границ включен, и ошибка только в момент закрытия программы
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 30
25.06.2012, 12:24  [ТС] 4
во вложении полностью исходник и сама программа
Вложения
Тип файла: rar vm.rar (229.0 Кб, 115 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
25.06.2012, 14:49 5
Цитата Сообщение от Wild Heart Посмотреть сообщение
вычисления проходят и проходят правильно!
А я и не говорю, что неправильно. Зато у меня происходит вылет программы в указанном выше месте. Вылет - это правильно? И кому я верить должен, твоим заверениям, или своим глазам? Будешь дальше спорить, или все-таки начнешь править программу?
Миниатюры
Ошибка exception eaccessviolation in module  
1
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
25.06.2012, 14:53 6
Попробуй так, со строки 22 -27 заменить на
Delphi
1
2
3
4
5
6
M := StringGrid4.RowCount ;
  SetLength(y, M);
  SetLength(x, M);
  SetLength(d, M);
 
  for i := 0 to M-1 do
И строку 37
на
Delphi
1
for i := 0 to M-1 do
1
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 30
26.06.2012, 10:18  [ТС] 7
Спасибо всем большое! только добрался до компа, все переделал работает
0
26.06.2012, 10:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2012, 10:18
Помогаю со студенческими работами здесь

Ошибка Delphi XE3. Exception EAccessViolation in module Project1.exe at 00252E0E
Есть база данных с 2 таблицами (связь один-ко-многим). Мне требовалось организовать связывание...

Ошибка: Exception EAccessViolation in module
Добрый день! Люди, помогите, пожалуйста! Ошибка при запуске программы: Exception EAccessViolation...

После компиляции ошибка exception eaccessviolation in module
program Project1; {$APPTYPE CONSOLE} {Дана строка символов, состоящая из натуральных чисел,...

Ошибка Exception EAccessViolation in module project1.exe. at 61A45D13
При закрытии программы выходит ошибка &quot;Exception EAccessViolation in module project1.exe. at...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru