Двухмерный массив указателей

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
stesl
новенький
Сообщения: 31
Зарегистрирован: 30.03.2018 04:40:02

Двухмерный массив указателей

Сообщение stesl »

Снова всем привет!
Если кто заглядывал в тему http://freepascal.ru/forum/viewtopic.php?f=23&t=27493 то возможно поймет, что бьюсь я сейчас над реализацией сети Петри, моделирующую семафор. Ее ска оказалось описать надо ЯВНО. То есть все движения фишек,состояния позиций и переходов, в обчем - северный пушистый зверек.

Ну да ладно. Понадобился мне для этой хиромантии 2-мерный массив, причем 2-й массив этого массива (простите, не знаю как яснее выразиться) должен состоять из указателей

Код: Выделить всё

CONST
P=4; T=3;
TYPE
Pter=^word;
I=array [1..T] of array [1..P] of Pter;
Myu=array [1..P] of word;
VAR
Ivar   :I;
Miu   :Myu;
BEGIN
Ivar[1,1]:=^Miu[1]; Ivar[1,2]:=^(Miu[3]);
END.


Как то не приходилось мне работать с многомерными массивами. Подскажите, почему компилятор против такого присваивания (в теле, и со скобками и без)? И как сделать правильно?
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

Ivar[1,1] := @Mui[1];
stesl
новенький
Сообщения: 31
Зарегистрирован: 30.03.2018 04:40:02

Сообщение stesl »

wadman писал(а):Ivar[1,1] := @Mui[1];

Блин, ну конечно оператор нужен :) Вечно я с этими указателями плыву. Наверно еще его нибудь натуплю - обращусь ;)

Добавлено спустя 53 минуты 16 секунд:
Не прошло и часа...
if (Ivar[1,1]^>0) and (Ivar[1,3]^>0) then

вываливает ошибку 216 в рантайме. Понимаю, что то то некорректно с областью памяти, но не понимаю где
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Код: Выделить всё

if (Ivar[1,1]^>0) and (Ivar[1,3]^>0) then
а вы тут за "границы" не лезете, случаем?
Проверьте значение массива. Если не тут то выше партачили.
stesl
новенький
Сообщения: 31
Зарегистрирован: 30.03.2018 04:40:02

Сообщение stesl »

pupsik писал(а):Если не тут то выше партачили.

Да, портак нашел уже. Не был инициирован I[1,3], т.е. имели указатель на NIL, но все равно, не идет... пока... ковыряю

Добавлено спустя 11 минут 19 секунд:
Дальше похоже та же тема, но пора спать :) Извините за излишние вопросы. Так бывает - не можешь понять что то, а пока формулируешь это на каком то ресурсе - приходит понимание ;)
Ответить