Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Riddas
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 4
#1

Задача на сложение больших чисел, ошибка "Exception EAccessViolation" - Delphi

19.10.2014, 18:27. Просмотров 571. Ответов 3
Метки нет (Все метки)

Здравствуйте.

При выполнении задачи на сложение больших чисел столкнулся с проблемой: составленный мой код работает в PascalABC, но не работает в Delphi. Точнее, в Delphi в конце работы программы в консоли выбивается ошибка: "exception EAccessViolation in module Lo.exe at 0000872B. Access violation at address 0040872B in module 'Lo.exe'. Write of address 000...(дальше какие-то нули)"

http://www.cyberforum.ru/delphi-beginners/thread1900668.html
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
program Lo;
 
{$APPTYPE CONSOLE}
 
var
i, s, b, f, min, d, osn: integer;
  s1, s2, s3, m, smin, smax: string;
 
begin
s:=0;
f:=0;
b:=0;
osn:=0;
while f=0 do
begin
if b>0 then writeln ('Vvod nevernyi');
f:=1;
writeln ('Osnovanie sistemy schicleniya');
readln (osn);
if (osn<2) or (osn>10) then f:=0;
writeln ('Pervoye chislo');
readln (s1);
writeln ('Vtoroe chislo');
readln (s2);
for i:=1 to length(s1) do if strtoint(s1[i])>(osn-1) then f:=0;
for i:=1 to length(s2) do if strtoint(s2[i])>(osn-1) then f:=0;
b:=b+1;
end;
d:=abs(length(s1)-length(s2));
if length(s1)>length(s2)
then
begin
min:=length(s2);
smin:=s2;
smax:=s1;
end
else
begin
min:=length(s1);
smin:=s1;
smax:=s2;
end;
for i:=min downto 1 do
begin
if s>0 then s3[i]:='1' else s3[i]:='0';
if strtoint(smax[i+d])+strtoint(smin[i])+strtoint(s3[i])>(osn-1)
then
begin
m:=inttostr((strtoint(s3[i])+strtoint(smax[i+d])+strtoint(smin[i])) mod osn);
s3[i]:=m[1];
s:=1;
end
else
begin
m:=inttostr(strtoint(s3[i])+strtoint(smax[i+d])+strtoint(smin[i]));
s3[i]:=m[1];
s:=0;
end;
end;
if d=0 then
begin
 
if s=1 then
begin
write ('1');
for i:=1 to length(smax) do write (s3[i]);
end
 
else for i:=1 to length(smax) do write (s3[i]);
 
end
 
else
begin
if s=1 then
begin
write (inttostr(strtoint(copy(smax, 1, d))+1));
for i:=1 to (length(smax)+d) do write (s3[i])
end
else
begin
write(copy(smax, 1, d));
for i:=1 to (length(smax)+d) do write (s3[i]);
end;
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2014, 18:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задача на сложение больших чисел, ошибка "Exception EAccessViolation" (Delphi):

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

Ошибка raised exception class EConvertError "is not valid integer value"
при попытке сменить кол-во столбцов в Stringgrid и переходе на него вылазит...

Ошибка: raised exception class econverterror with message "is not valid integer value"
Ребята помогите ошибка &quot;raised exception class econverterror with message is...

Как избавится от "First chance exception Exception class EOutOfResources with message 'Out of system resources'."?
Как избавится от &quot;First chance exception at $765CC54F. Exception class...

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

3
Игорь[Igor]
716 / 468 / 128
Регистрация: 24.12.2008
Сообщений: 3,901
20.10.2014, 03:04 #2
Где-то выходиш за пределы памяти
0
Joy
Эксперт Pascal/Delphi
2117 / 1157 / 1418
Регистрация: 29.08.2014
Сообщений: 4,219
20.10.2014, 08:31 #3
Riddas, отладкой пользоваться не помешало бы
ошибка при вводе 2 10 1010 вылазит тут 45 строка:
Delphi
1
if s>0 then s3[i]:='1' else s3[i]:='0';
У вас переменная s3 пустая, а вы пытаетесь по несуществующему индексу [i] в нее записать.
0
Riddas
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 4
30.11.2014, 21:19  [ТС] #4
Разобрался до того, как получил здесь ответ.
Поэтому долго не заходил. Несмотря на то, что разобрался сам, спасибо за помощь (пусть и запоздалое). Всё так и вышло.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2014, 21:19
Привет! Вот еще темы с решениями:

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

Ошибка: Exception class EAccessViolation with message 'Access violation at address 0045DE23'
Ошибка в программе, сначала выходит вот это сообщение , а потом вот это ....

Ошибка exception eaccessviolation in module
Товарищи подскажите в чем проблема! запускаю программу все работает, но при...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru