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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 23:21   #1
like_cloud
Пользователь
 
Аватар для like_cloud
 
Регистрация: 09.12.2009
Сообщений: 29
По умолчанию как создать динамический массив в своем классе?

имеется класс,созданный мной:

Код:
type
  TSnake=class(TObject)
    Sprite:TBitmap;
    Size:byte;
    HeadPosX,HeadPosY: integer;
    BitPosX,BitPosY: array of integer;
    SpeedX,SpeedY:integer;

    constructor Create;
    procedure Move;
    procedure Draw;
end;
в классе есть 2 одномерных массива BitPosX и BitPosY. При создании экземпляра класса конструктором и попытке присвоить какие-либо значения элементам массивов вылтает ошибка,что программа обращается к неверной ячейки памяти или что-то в этом духе. Можно конечно использовать нединамический массив и железно объявить его размер. Но в данном случае мне это не надо, да и раз проблема появилась,то все чешется ее решить. Как тогда поступить? По ходу работы программы массив будет меняться в своем размере.

Последний раз редактировалось like_cloud; 23.11.2010 в 01:10.
like_cloud вне форума Ответить с цитированием
Старый 23.11.2010, 00:53   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

внимательнее быть нужно смотри, как твои "массивы" объявлены:

HeadPosX,HeadPosY: integer;
maxionans вне форума Ответить с цитированием
Старый 23.11.2010, 01:11   #3
like_cloud
Пользователь
 
Аватар для like_cloud
 
Регистрация: 09.12.2009
Сообщений: 29
По умолчанию

ага,нужно) но ошибся я в задании вопроса, массивы вот BitPosX,BitPosY. мои извинения

Не нужно зря цитировать предыдущее сообщение! Это - флуд.
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
А кроме кнопки "Цитата" внизу есть простое окно для ввода своего сообщения.
Или маленькая кнопочка "Быстрый ответ" справа от кнопки "Цитата".
Попадаете туда же.
Модератор

Последний раз редактировалось mihali4; 23.11.2010 в 13:07.
like_cloud вне форума Ответить с цитированием
Старый 23.11.2010, 09:29   #4
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

ну тогда покажи код на котором происходит ошибка. и покажи как ты массивы инициализируешь.

Последний раз редактировалось maxionans; 23.11.2010 в 20:24.
maxionans вне форума Ответить с цитированием
Старый 23.11.2010, 20:15   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если массиву выделить память в одном из методов класса (хотя бы с помощью SetLength) и обращаться к нему корректно, то проблем не будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.11.2010, 23:27   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

+1
допиши в конструкторе
Код:
SetLength(BitPosX, <N>);
SetLength(BitPosY, <N>);
Где <N> длина массива.
psycho-coder вне форума Ответить с цитированием
Старый 24.11.2010, 09:13   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

И не забудь в деструкторе
Код:
SetLength(BitPosX, 0);
SetLength(BitPosY, 0);
Помогает от утечек памяти. Вообще здесь следует придерживаться буддийской философии - все в мире должно находится в равновесии. Поэтому сколько взял столько и отдай и не байтом меньше.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CLI создать глобальный управляемый динамический массив Point Eros Общие вопросы .NET 1 03.02.2011 15:50
TCaption в своем классе ZotaC Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 26.05.2010 19:21
Как создать многомерный динамический массив в Delphi? Velross Помощь студентам 3 06.01.2010 20:50
Использование MediaPlayer в своем классе. Вадим Буренков Мультимедиа в Delphi 5 03.04.2009 17:16
Подскажите, как создать динамический массив? snaem Общие вопросы .NET 9 14.05.2008 08:52