Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 5
1

Динамические переменные

19.08.2013, 20:17. Показов 1886. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго!
Если коротко: я сейчас пытаюсь сделать 2d игру на делфи и столкнулся с проблемой.
Суть: У меня есть цикл, вот он:
Delphi
1
2
3
4
5
6
7
for BLOCK_ID:=1 to 100 do
begin
bx1:=b[BLOCK_ID].Left;
bx2:=b[BLOCK_ID].Left+25;
by1:=b[BLOCK_ID].Top;
bx2:=b[BLOCK_ID].Top+25;
end;
В нём BLOCK_ID - абсолютно обычная переменная типа Integer;
Delphi
1
BLOCK_ID:Integer;
Тут bx1 - очередная переменная типа Integer, а b[BLOCK_ID] - это переименованный объект Shape.
Подробнее: у меня есть 5 шейпов: b1, b2, b3, b4, b5 - собственно, их имена.
Ну и дальше все просто - чтобы я не прописывал уйму строк - мне нужно, чтобы вместо [BLOCK_ID] была цифра (от 1 до 100)
Delphi
1
for BLOCK_ID:=1 to 100 do
Объяснил я криво, согласен. Но если кто-нибудь поймет хоть часть из этого текста - спросите то, что не понятно в моих объяснениях.
Жду ответов:с
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2013, 20:17
Ответы с готовыми решениями:

Динамические переменные
1) const n=10 type Rec = record x,y:real; end; PRec = ^Rec; ...

Динамические переменные.
Как можно добавить строку из edit в текстовый файл, с помощью динамической переменной?

Динамические переменные
Как сделать так чтобы в результате этой процедуры на экран выводился номер записи, а не только...

Динамические переменные!
program Project4; {$APPTYPE CONSOLE} uses SysUtils; const n = 10; type Elmnts = 0..9; M =...

15
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
19.08.2013, 20:26 2
Вопрос-то в чем?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
19.08.2013, 20:29 3
FindComponent('b'+IntToStr(BLOCK_ID))
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
19.08.2013, 22:10 4
Цитата Сообщение от GreenGrassD Посмотреть сообщение
Тут bx1 - очередная переменная типа Integer, а b[BLOCK_ID] - это переименованный объект Shape.
Подробнее: у меня есть 5 шейпов: b1, b2, b3, b4, b5 - собственно, их имена.
Тогда уж имена b[1], b[2], b[3], b[4], b[5], так как Вы к ним обращаетесь в цикле, но тогда и объявление будет:
Delphi
1
2
3
var b: array of TShape;
// или
var b: array[1..5] of TShape;
Цитата Сообщение от GreenGrassD Посмотреть сообщение
Если коротко: я сейчас пытаюсь сделать 2d игру на делфи и столкнулся с проблемой.
Хорошее начинание
Поставлю Вам плюсик, когда будет такая возможность у меня и когда Вы допишете-таки игру.
1
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 5
20.08.2013, 17:59  [ТС] 5
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Тогда уж имена b[1], b[2], b[3], b[4], b[5], так как Вы к ним обращаетесь в цикле, но тогда и объявление будет:
Delphi
1
2
3
var b: array of TShape;
// или
var b: array[1..5] of TShape;
Хорошее начинание
Поставлю Вам плюсик, когда будет такая возможность у меня и когда Вы допишете-таки игру.
Спасибо!

Добавлено через 3 часа 0 минут
UPIT

Добавлено через 5 секунд
UPIT
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.08.2013, 18:09 6
Что UPIT? Ты прочитал только одно сообщение, причем самое неправильное из всех, чего апать тему? Читай полностью, правильный ответ уже дан.
0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 5
20.08.2013, 18:13  [ТС] 7
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Тогда уж имена b[1], b[2], b[3], b[4], b[5], так как Вы к ним обращаетесь в цикле, но тогда и объявление будет:
Delphi
1
2
3
var b: array of TShape;
// или
var b: array[1..5] of TShape;
Хорошее начинание
Поставлю Вам плюсик, когда будет такая возможность у меня и когда Вы допишете-таки игру.
Я пока что пробую первый способ (который подсказали выше - он для меня понятней) - и столкнулся с такой проблемой:
http://puu.sh/46pXy.png
Что делать?:с

Добавлено через 1 минуту
Цитата Сообщение от UI Посмотреть сообщение
Что UPIT? Ты прочитал только одно сообщение, причем самое неправильное из всех, чего апать тему? Читай полностью, правильный ответ уже дан.
Ну вот ты можешь помочь?
http://puu.sh/46pXy.png вот что случилось.

Добавлено через 46 секунд
Цитата Сообщение от northener Посмотреть сообщение
FindComponent('b'+IntToStr(BLOCK_ID))
помоги:с http://puu.sh/46pXy.png
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
20.08.2013, 19:51 8
GreenGrassD: У тебя там for был от 1 до 100, а шейпов всего 5. Ты не забыл поставить цикл от 1 до 5 ? Потому что, похоже, у тебя обращение к несуществующему объекту. Т.е. FindComponent дало Nil.

Добавлено через 9 минут
Или объясни, почему на 5 шейпов цикл от 1 до 100.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
20.08.2013, 20:20 9
Цитата Сообщение от GreenGrassD Посмотреть сообщение
Цитата Сообщение от northener Посмотреть сообщение
FindComponent('b'+IntToStr(BLOCK_ID))
помоги:с
Ну чтобы такой вариант работал нужно во-первых чтобы компонент имел именно такое имя (TComponent.Name) b1, b2..bN. Во-вторых нужно чтобы у этого компонента был владелец (Owner). И в третьих это должен быть компонент класса TShape. Если ваши шейпы были брошены на форму в designtime, то можно надеяться что эти условия выполнены. Если же они созданы в runtime, то показывайте как.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
20.08.2013, 21:39 10
Для начала компонент надо создать. И родителя не мешало бы назначить (а не владельца).
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
20.08.2013, 21:58 11
Цитата Сообщение от FIL Посмотреть сообщение
И родителя не мешало бы назначить (а не владельца).
Не был бы назначен родитель, компонент был бы вообще невидим. Тогда и проблема была бы другая. А владелец необходим именно для того, чтобы компонент попал в список Components и его можно было бы найти по имени методом FindComponent.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
20.08.2013, 22:10 12
Так владелец при создании компонента указывается
Delphi
1
TComponent.Create(Self)
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
20.08.2013, 22:26 13
Цитата Сообщение от FIL Посмотреть сообщение
Так владелец при создании компонента указывается
TComponent.Create(Self)
Слишком много во всемирной помойке примеров c
Delphi
1
Create(nil)
, которые нельзя назвать не правильными.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
20.08.2013, 22:37 14
Цитата Сообщение от FIL Посмотреть сообщение
Так владелец при создании компонента указывается
так указывается объект, в чей список Components будет занесен создаваемый объект, при его разрушении будет сначала вызван деструктор объектов из Components, затем будет уничтожен сам родитель, этого можно и не делать - указать nil, но тогда за уничтожением этого объекта (речь про VCL), необходимо следить самому, владелец объекта находится в свойстве Parent - относительно этого владельца происходит отображение создаваемого объекта.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
20.08.2013, 22:42 15
Owner - владелец - отвечает, в т.ч. за уничтожение объекта.
Parent - родитель - на нем рисуется компонент.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
20.08.2013, 22:49 16
FIL, именно так, Owner - владелец, Parent - родитель, согласно перевода на великий и могучий, попутал, но суть та же
0
20.08.2013, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2013, 22:49
Помогаю со студенческими работами здесь

Динамические переменные
Ребята, дайте пожалуйста код программы в Delphi с использованием динамических переменных. Спасибо!

Динамические переменные
Написать программу, создающую структуру динамических переменных, показанную на рисунке. В конце...

Динамические переменные
помогите пожалуйста с задачей, осталось времени всего не чего до сдачи, а последнюю ни как не...

Динамические переменные
Очень плохо понимаю динамические переменные.Помогите написать программу. Как и с чего начинать не...

динамические переменные,
Здравствуйте. решила вроде задачу, но есть небольшая сложность. задача Написать программу,...

Динамические переменные (список)
Описать и проверить процедуру или функцию, которая проверяет, есть ли в списке L хотя бы два...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru