Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
1

Как вообще такое может быть, это просто супер баг какой-то

01.11.2015, 14:01. Показов 738. Ответов 8
Метки нет (Все метки)

Есть программа, результат выполнения отладочных строк
Pascal
1
2
3
4
5
6
7
procedure spervogo;
var
counter1, counter2,counter1R, counter2R, y : integer;
begin
Writeln(UTF8ToConsole('spervogo'));/////////////////////////////////////////////отладка
 counter1R:= high(arraygrid[izmerenie1]);
 Writeln(UTF8ToConsole('counter1R= '),counter1R);////////////////////////////отладка
на скриншоте консоли. в ходе выполнения программы были выполнены следующие строки
Pascal
1
2
3
begin
SetLength(arraygrid,x);
end;
где x вводился на консоли в седьмой строке и его значение равно семи, видно на скриншоте.
Помогите пожалуйста.
0
Миниатюры
Как вообще такое может быть, это просто супер баг какой-то  
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2015, 14:01
Ответы с готовыми решениями:

Как такое может быть и что это такое?
в маленьком превью одна картинка, открываешь совершенно другая (какая и должна быть) с чем это...

Параметризованный список что это может быть такое
Есть задание: Создать класс Студент. Студенты должны заноситься в параметризованный список. У...

Как работать с LPCWSTR? Как перевести char в это? И что это вообще такое?
Как работать с LPCWSTR? Как перевести char в это? И что это вообще такое?

Все страницы сайта выпали из индекса, какой это может быть фильтр
Здравствуйте, вот хочется разобраться сегодня у яндекса глобальный глюк или одному моему сайту...

8
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
01.11.2015, 14:37  [ТС] 2
ах да
это было выполнено тоже
Pascal
1
2
var
arraygrid: array of array of array of array of array of integer;
Добавлено через 1 минуту
очевидно надо как-то задать минимальный размер по всем измерениям массива? я думал, что когда многомерный объявляется везде по одной ячейке на измерение, как минимум.
0
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
01.11.2015, 14:52  [ТС] 3
вот проект весь, в вложении
0
Вложения
Тип файла: zip redactor_massivov.zip (4.54 Мб, 2 просмотров)
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
01.11.2015, 15:09  [ТС] 4
Прошу помочь, я так понимаю, что не задан размер всего массива, даже по минимуму - по одной ячейке на измерение...

Добавлено через 4 минуты
Всё понял, надо обязательно делать так
Pascal
1
SetLength(arraygrid,1,1,1,1,1);
.
Тогда вот тут должно быть так
Pascal
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 TForm1.sozdastMassive;//СОЗДАСТ МАССИВ
 
//tproc = procedure is nested;
 
var
arr1 : arr;
procedure spervogo;
begin
SetLength(arraygrid,x);
end;
procedure svtorogo;
begin
SetLength(arraygrid,1,x);
end;
procedure stretiego;
begin
SetLength(arraygrid,1,1,x);
end;
procedure schetvyortogo;
begin
SetLength(arraygrid,1,1,1,x);
end;
procedure spyatogo;
begin
SetLength(arraygrid,1,1,1,1,x);
end;
begin
 SetLength(arr1,6);
arr1[0]:=@spervogo;
arr1[1]:=@svtorogo;
arr1[2]:=@stretiego;
arr1[3]:=@schetvyortogo;
arr1[4]:=@spyatogo;
SetLength(arraygrid,1,1,1,1,1);
writeln(UTF8ToConsole('введите мерность массива'));
readln(mernost);
writeln(UTF8ToConsole('введите размер лицевой таблицы'));
writeln(UTF8ToConsole('x'));
readln(x);
y:=2;
writeln(UTF8ToConsole('готово'));
vyvedetTablicu;
writeln(UTF8ToConsole('тут всё работает'));
navigation:=5-mernost;
Writeln('navigation ',navigation);
writeln(UTF8ToConsole('индекс отсчёта и текущий'),navigation);
arr1[navigation];
0
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
01.11.2015, 15:34  [ТС] 5
И даже так не работает
Pascal
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
rocedure TForm1.sozdastMassive;//СОЗДАСТ МАССИВ
 
//tproc = procedure is nested;
 
var
arr1 : arr;
procedure spervogo;
begin
SetLength(arraygrid,x,1,1,1,1);
end;
procedure svtorogo;
begin
SetLength(arraygrid,1,x,1,1,1);
end;
procedure stretiego;
begin
SetLength(arraygrid,1,1,x,1,1);
end;
procedure schetvyortogo;
begin
SetLength(arraygrid,1,1,1,x,1);
end;
procedure spyatogo;
begin
SetLength(arraygrid,1,1,1,1,x);
end;
begin
 SetLength(arr1,6);
arr1[0]:=@spervogo;
arr1[1]:=@svtorogo;
arr1[2]:=@stretiego;
arr1[3]:=@schetvyortogo;
arr1[4]:=@spyatogo;
SetLength(arraygrid,1,1,1,1,1);
writeln(UTF8ToConsole('введите мерность массива'));
readln(mernost);
writeln(UTF8ToConsole('введите размер лицевой таблицы'));
writeln(UTF8ToConsole('x'));
readln(x);
y:=2;
writeln(UTF8ToConsole('готово'));
vyvedetTablicu;
writeln(UTF8ToConsole('тут всё работает'));
navigation:=5-mernost;
Writeln('navigation ',navigation);
writeln(UTF8ToConsole('индекс отсчёта и текущий'),navigation);
arr1[navigation];
writeln(UTF8ToConsole('создан массив'));
end;
суть в том, что я создаю файл в меню, далее в консоли ввожу мерность и размер лицевой таблицы, и вот ошибка уже совсем другая, хотя на все измерения установлен размер
0
Миниатюры
Как вообще такое может быть, это просто супер баг какой-то  
Вложения
Тип файла: zip redactor_massivov (2).zip (4.54 Мб, 2 просмотров)
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 853
01.11.2015, 15:41 6
Посмотрите 423 строку:
Delphi
1
arr1[navigation];
msg="Cannot find bounds of current function"
0
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
01.11.2015, 16:10  [ТС] 7
Это строка 433, вообще-то.
И как-бы выполняется процедура
procedure TForm1.vyvedetTablicu;//выведет таблицу
procedure snulya;
а до этого я создаю в консоли массив мерности 5-и, и не работает в общем. тут очевидно - не правильно задаётся размер массива.

Добавлено через 10 минут
Вообще задумка была создать массив, размеры которого, в каждой мерности, можно было-бы менять в ходе выполнения программы - редактировать массив. это нужно, просто "костыль" такой я делаю для себя, чтобы можно было в код заливать заполненные статичные массивы. надо, я с массивами работаю активно в программах.
А так-то он и ругается в консоли на строку 395, где задаётся размер массива...

Добавлено через 9 минут
По разному делаю, он ругается на эту строку. Тут явно не правльно размеры массива задаю, а как правильно это делать не знаю.
0
355 / 155 / 39
Регистрация: 11.07.2013
Сообщений: 853
01.11.2015, 16:47 8
108 строчка и далее:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 with StringGrid1 do
  begin
  counter1R:=3;
  //ColCount :=counter1R+1;
  ColCount :=10;
  RowCount :=2;
  end;
for counter1:=0 to counter1R do  // заполнять ячейкм
 begin
 with StringGrid1 do
  begin
  Cells[counter1+1,1]:=IntToStr(high(arraygrid[counter1R]));
// StringGrid1.Cells[counter1+1,1]:=IntToStr(high(arraygrid[counter1R]));
 end;
counter1R всегда равен 0, т.к.
Pascal
1
counter1R:= high(arraygrid);
а arraygrid у вас объявлен, но я не нашёл его инициализацию.
0
395 / 104 / 2
Регистрация: 25.01.2012
Сообщений: 3,528
Записей в блоге: 38
02.11.2015, 16:09  [ТС] 9
Я думал, что раз установлен размер массива, то он уже однозначно может применяться
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SetLength(arraygrid,x,1,1,1,1);
end;
procedure svtorogo;
begin
SetLength(arraygrid,1,x,1,1,1);
end;
procedure stretiego;
begin
SetLength(arraygrid,1,1,x,1,1);
end;
procedure schetvyortogo;
begin
SetLength(arraygrid,1,1,1,x,1);
end;
procedure spyatogo;
begin
SetLength(arraygrid,1,1,1,1,x);
end;
а раз установлен размер массива, то
Pascal
1
counter1R:= high(arraygrid);
не может быть всегда равен нулю.

Добавлено через 27 минут
Ошибка-то выскакивает после действий в консоли-создаю файл, вызывается процедура задающая размер массиву, и далее должна открыться в StringGrid первая ветка массивов, размеры заданы ведь, но я так понял, что не инициализированы массивы в первой ветке? Об этом речь идёт? То-есть, если я задал размер первой ветки в семь ячеек, то соответственно должен быть задан размер каждой из них? Или нет?

Добавлено через 1 час 41 минуту
Вообще хорошо, что консоль есть, я вычислил ошибку-убрал строку 42 в посте #5
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2015, 16:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как работает оператор **, что это вообще такое?
Где то на майлах нашел возведение в корень при помощи **.5 так..что это вообще за херь и что она...

Что это может быть? или как это называется? Меня взломали!
Доброго дня всем, мне по майл.ру.агент отправили сообщением так: Витя Гасай (08.03.2011 23:29)...

Как такое может быть?
С удивлением после последнего апа обнаружил в ТОП-10 на седьмой позиции флеш-сайт, с вообще...

Как такое может быть?
1. По некому высокочастотному запросу "А" в топ5 висят сразу <b>три</b> сайта с одними и теми же...


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

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

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