![]() |
![]() |
comanche |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Добрый день, товарищи! Дело такое:
Имеются два независимых объекта. Как заставить их работать сообща, тобишь чтобы переменная одного объекта (в моём случае - массив) могла быть доступна другому объекту при описании? Пока что вижу всего лишь один способ - объединить оба объекта в один ![]() -------------------- Released by Demons
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Пример готовых отдельных объектов приведи, и ЧТО ты хочешь чтобы было доступно - тоже... Посмотрим, как можно это реализовать... Кстати, для какого компилятора, уточни...
Цитата чтобы переменная одного объекта (в моём случае - массив) могла быть доступна другому объекту при описании? ![]() |
comanche |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
"При описании" я имел в виду, что уже при описании выдаёт ошибку, то что второму объекту не известны методы первого.
Вот здесь, например, я хочу вывести на экран массив, хранящийся в первом объекте на экран при помощи второго объекта. P.s. использую TMT, но на TP тоже должно пахЫть ![]() Type -------------------- Released by Demons
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата я хочу вывести на экран массив, хранящийся в первом объекте на экран при помощи второго объекта. Да ты покажи, КАК ты хочешь вызывать это... У меня никакой ошибки не показывает, ИБО НЕТ ЕЕ в том коде, который ты привел ! |
comanche |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
-------------------- Released by Demons
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Так устроит:
Const ? |
comanche |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Это, конечно, хороший вариант.
Тоеть насколько я понимаю, нельзя два независимых объекта согласовать без вложенности одного в другой? ![]() Возникает второй вопрос: почему вы не выделяли память под P (pGame)? Constructor сам всё выделил? ![]() Немного не понимаю вот этой строки: New(Menu, Init(Game)); Сообщение отредактировано: comanche - 13.03.2006 16:05 -------------------- Released by Demons
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата(comanche @ 13.03.2006 15:04) Это, конечно, хороший вариант. ![]() Цитата(comanche @ 13.03.2006 15:04) Тоеть насколько я понимаю, нельзя два независимых объекта согласовать без вложенности одного в другой? Ну, я бы не сказал, что это вложенность, это все-таки p: PTGame, а следовательно указатель на объект типа TGame...![]() Цитата(comanche @ 13.03.2006 15:04) Возникает второй вопрос: почему вы не выделяли память под P (pGame)? Constructor сам всё выделил? Смотри, что происходит: тип TMenu содержит переменную P... Задача конструктора - выделить в памяти место, достаточное для хранения всех переменных, правда? Зачем я еще что-то должен делать? На то и Constructor ...![]() Цитата(comanche @ 13.03.2006 15:04) Немного не понимаю вот этой строки: New(Menu, Init(Game)); Ну, я же поменял заголовок конструктора, и теперьConstructor TMenu.Init(pGame: PTGame); должен получать аргумент - указатель на TGame... Вот я и передаю его при инициализации... |
comanche |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Огромное спасибо и уважуха в квадрате
![]() ![]() -------------------- Released by Demons
|
comanche |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Возник ещё один теоретический вопрос:
Тоесть со статическими объектами нельзя было бы проделывать такие же действия? ![]() -------------------- Released by Demons
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Все, что можно с динамикой, можно и со статикой. Операцию "@" еще никто не отменял
![]() |
comanche |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
А вот такой мы пока ещё не знаем, а если и слышали, то не понимаем её предназначения.
Спасибо! ![]() -------------------- Released by Demons
|
comanche |
![]()
Сообщение
#13
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Эхх мааа... Сделал всё так же как вы сказали, теперь же в результате вывода массива выводятся нули, а если
оставить New(Menu, Init(Game)); Т.е. не менять местами New(Menu, Init(Game)); То выводятся хаотичные значения, причём одни и те же. ![]() Код: (Показать/Скрыть)
-------------------- Released by Demons
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Если не менять местами - будет непонятно что, потому что СНАЧАЛА надо инициализировать Game, а потом передавать его в Menu...
Сейчас гляну, что там происходит... (только я проверяю в FPC, у меня TMT не установлен...) ![]() Constructor TGame.Init; Попробуй изменить ТОЛЬКО это, у меня выдает то, что было инициализировано: Цитата 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 |
comanche |
![]()
Сообщение
#15
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Да, заработало. В чём же причина?
![]() -------------------- Released by Demons
|
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
В том, что просто сделать Randomize недостаточно... Нужно еще и заполнить матрицу значениями. А для этого достаточно сказать компилятору, какая процедура этим занимается... Что я и сделал
![]() |
comanche |
![]()
Сообщение
#17
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Победили!
![]() -------------------- Released by Demons
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 20:01 |