Здравствуйте уважаемые эксперты! Не могу разобраться с программой. Какой-то очень интересный глюк. Нужно создать динамический массив из Byt'ов. Элементы добавляются только в конец при нажатии клавиши 1. Так вот, смотрю в отладчике. При первом проходе все нормально (создается первый элемент), при втором не выполняется строка {1}. Дальше вроде все нормально. В чем ошибка? Заранее благодарен.
Добрый день, Shurik! И правильно делает. Скажи спасибо, что не выдает ошибку об обращении к чужой памяти! Смотри. Пусть ты сейчас хочешь занести 2-й элемент. Твой список выглядит так: PtrXEl -> (1, nil) Т.е. значение PtrXEl^.ElPtr = nil. Теперь смотри, что происходит. Ты в цикле repeat (а он всегда выполнится хотя бы 1 раз) просматриваешь элементы. После первого же присваивания значение PtrCurrent будет равно nil. И все. Приехали. Что бы это исправить, надо переписать цикл. Скорее всего, надо раскомментировать цикл while и перед ним поставить еще один Inc (k). Тогда должно заработать. Ответ отправлен: 04.01.2003, 15:37 Отправитель: Ayl Отвечает Vadim
Добрый день, Shurik! Круто, но непонятно :)). Посмотри такой код (см. приложение). В нем можно разобраться без всякого отладчика :)).
Приложение: Ответ отправлен: 06.01.2003, 13:08 Отправитель: Vadim Отвечает Sensey
Здравствуйте, Shurik! В общем держи. Думаю разберешься... Основной глюк был в REPEAT UNTIL при добавлении. Сравни и поймешь. (Подсказка- ты модифицировал текущий nil-om, а потом что-то с ним пытался делать)
Приложение: Ответ отправлен: 04.01.2003, 13:59 Отправитель: Sensey Отвечает Tancho
Доброе время суток, Shurik! Мне кажеться что у тебе все в порядке, только в твоем списке всегда надо иметь начало и про этом надо иметь всегда Первый елемент! Вставь в начале Головную прогу 'PtrFirstElement^.m := 1; '(или чего хочешь другово) и все будеть как должно иначе что будеть если в самом начале ответь будеть '2'?
Ответ отправлен: 07.01.2003, 13:06 Отправитель: Tancho
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.