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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2017, 23:21   #1
jipumex@cartelera.
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 12
По умолчанию Выдаёт ошибку adress violation on xxx - Delphi

Код:
procedure TForm2.Button1Click(Sender: TObject);
const str=12;
stol=1;
var a:array [0..str-1,0..stol-1] of real;
i,j:integer;
buf,summ:real;
s,prob:string;
begin
prob:=' ';
for i:=0 to str-1 do
for j:=0 to stol-1 do
a[i,j]:=strtofloat(stringgrid1.cells[i,j]);
for i:=0 to str-1 do
for j:=0 to stol-1 do
if a[i,j]<0 then
summ:=a[i,j]+summ;
for i:=0 to str-1 do
for j:=0 to stol-1 do
if a[i,j]>a[i+1,j] then
begin
buf:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=buf;
end;
label1.caption:=floattostrf(summ,fffixed,0,3);
for i:=0 to str-1 do
for j:=0 to stol-1 do
s:=s+floattostrf(a[i,j],fffixed,0,3)+prob;
label2.caption:=s;
end;
В чём ошибка?

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 27.04.2017 в 09:59.
jipumex@cartelera. вне форума Ответить с цитированием
Старый 26.04.2017, 23:29   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Наерное здесь:
Код:
if a[i,j]>a[i+1,j] then
и других местах далее, где i+1

При i=str-1 => i+1=str, а это уже за пределами границ

Может быть надо так : ?
Код:
for i:=0 to str-2

Последний раз редактировалось type_Oleg; 26.04.2017 в 23:31.
type_Oleg вне форума Ответить с цитированием
Старый 26.04.2017, 23:40   #3
jipumex@cartelera.
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Наерное здесь:
Код:
if a[i,j]>a[i+1,j] then
и других местах далее, где i+1

При i=str-1 => i+1=str, а это уже за пределами границ

Может быть надо так : ?
Код:
for i:=0 to str-2
Попробовал, выдача заработала, но теперь не сортирует.

(стало так)
procedure TForm2.Button1Click(Sender: TObject);
const str=12;
stol=1;
var a:array [0..str-1,0..stol-1] of real;
i,j:integer;
buf,summ:real;
s,prob:string;
begin
prob:=' ';
for i:=0 to str-1 do
for j:=0 to stol-1 do
a[i,j]:=strtofloat(stringgrid1.cells[i,j]);
for i:=0 to str-1 do
for j:=0 to stol-1 do
if a[i,j]<0 then
summ:=a[i,j]+summ;
for i:=0 to str-2 do
for j:=0 to stol-1 do
if a[i,j]>a[i+1,j] then
begin
buf:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=buf;
end;
label1.caption:=floattostrf(summ,ff fixed,0,3);
for i:=0 to str-1 do
for j:=0 to stol-1 do
s:=s+floattostrf(a[i,j],fffixed,0,0)+prob;
label2.caption:=s;
end;

Последний раз редактировалось jipumex@cartelera.; 26.04.2017 в 23:43.
jipumex@cartelera. вне форума Ответить с цитированием
Старый 26.04.2017, 23:52   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от jipumex@cartelera. Посмотреть сообщение
но теперь не сортирует.
Ну так у вас - пузырек вроде.
А вы всего 1 проход делаете.
Например 2,3,4,5,1 -> будет всего лишь 2,3,4,1,5
type_Oleg вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
Ошибка access violation at adress Fealhas Общие вопросы Delphi 6 26.03.2013 12:32
Access violation at adress Volkogriz Общие вопросы Delphi 10 19.02.2013 15:41
Access violation at adress... eatlant Общие вопросы Delphi 4 12.04.2011 12:34
Получаю ошибку Access violation at adress fs444 Общие вопросы C/C++ 9 16.12.2009 08:04