Здравствуйте. Для простенькой игры пишу небольшой редактор карт. Карта представляет из себя квадрат из 8х8 тайлов. Всего имеется 8 видов тайлов. У них есть несколько параметров: Obstacle (препятствие, через которое можно стрелять), Wall (стена), Destroyable (стена/препятствие разрушимо), ID (вид тайла) и картинка (пока не реализована, да и не нужна в редакторе). Если Wall и Obstacle ложны, то это обычная земля/пол. Карта хранится в файле n.map.
Проблема такова: после заполнения таблицы (в ней в клетках указывается ID тайла в этом месте карты) и установки параметров слева жму кнопку "Сохранить". Если, не закрывая редактор, нажать "Загрузить", то все заработает без проблем. Но если закрыть редактор, открыть и нажать "Загрузить", то в случае запуска через Lazarus получиться беспорядочный набор чисел, в случае запуска .exe будет ошибка "Access violation". Помогите, пожалуйста, разобраться с этой проблемой, т.к. она довольно странная и ошибки в коде я не вижу.
Очередной глюк или кривые руки?
Модератор: Модераторы
Очередной глюк или кривые руки?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вы неправильно сохраняете и считываете экземпляры класса TTlile. По сути Вы сохраняете и считываете указатели (см. размер файла n.map)
Если хотите работать с объектами, пользуйтесь для хранения классом Tfilestream. В этом случае придется порождать их от TComponent.
Если хотите работать с объектами, пользуйтесь для хранения классом Tfilestream. В этом случае придется порождать их от TComponent.
Спасибо. Решил сделать TTile не классом, а записью, и в игре сделать перевод из записи в класс.
