IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> инициализация хэша, массив из списков
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста разобраться. Создаю хэш-таблицу со списками. В конструкторе списка вылетает с ошибкой нарушение доступа.


Прикрепленные файлы
Прикрепленный файл  Hash_vocabulary.rar ( 210.11 килобайт ) Кол-во скачиваний: 315
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Так. Сорри, это мой глюк, я открывал старый файл txt...

По поводу твоей программы... Объясни мне, зачем вот эти пляски:
Цитата
 constructor Class_List.Create;
begin
inherited Create;
new(L); // Вот эта пляска зачем?
L^.next := nil;
end;


, и потом, отсюда же вытекает:
Цитата
 function Class_List.search_to_list;
var
p : TList;
begin
result := false;
p := L^.next; // Вот это непонятное действие.
while assigned (p) do
begin
if p^.info.russian <> arussian then
p := p^.next
else
result := true;
end;
end;

Смотри, насколько все проще (и, что характерно, сбоев не вызывает):

 constructor Class_List.Create;
begin
inherited Create;
L := nil; // Ну ПУСТОЙ же список после создания экземпляра класса !!!
end;

// во втором месте:
function Class_List.search_to_list;
var
p : TList;
begin
result := false;
p := L; // А раз список был пустой - то и начинаем с начала
while assigned (p) do
begin
if p^.info.russian <> arussian then
p := p^.next
else
result := true;
end;
end;


А ты чего делал? Создавал список с заглавным (заметь, неинициализированным!!!) звеном, потом добавлял объекты в начало списка (в Class_List.add_to_list, посмотри внимательно, новый-то элемент добавляется ПЕРЕД существующими, а не ПОСЛЕ), а потом, думая, что надо пропустить заглавный элемент, ты пропускал инициализированные данные, и начинал работать с мусором. Вот тебе и глюки. Так что либо выкинь заглавное звено, либо добавляй данные в конец списка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Insomnia   инициализация хэша   5.05.2012 19:33
IUnknown   Файл un_hash: constructor Class_Hash_Table.Creat…   5.05.2012 20:24
Insomnia   Файл un_hash: constructor Class_Hash_Table.Crea…   5.05.2012 20:45
Insomnia   похожая проблема возникла в функции поиска в списк…   6.05.2012 2:21
IUnknown   Точную последовательность шагов для получения сбоя…   6.05.2012 2:34
Insomnia   ой,извини, я не четко сформулировал. При инициализ…   6.05.2012 2:38
IUnknown   Блин. И что? Как сбой увидеть?   6.05.2012 2:46
Insomnia   кнопка 'создание' -> выбор файла txt -…   6.05.2012 2:50
IUnknown   Никакого "бах", отображается пустая форм…   6.05.2012 3:02
Insomnia   что за магия ! Сделал скришнот, еще раз переза…   6.05.2012 3:18
IUnknown   Так. Сорри, это мой глюк, я открывал старый файл t…   6.05.2012 3:36
Insomnia   ого. Я балбес. Спасибо за помощь ! :good: P.S…   6.05.2012 3:46
Insomnia   У меня возникли 2 проблемы по ходу реализации кода…   6.05.2012 18:53
IUnknown   Абсолютно точно. Seek не умеет работать с текстовы…   6.05.2012 21:42
Insomnia   подсткажите пожалуйста , есть ли замена proc seek …   7.05.2012 20:16
IUnknown   есть ли замена proc seekЕсть. Файл открыва5ется не…   7.05.2012 20:48
Insomnia   спасибо за процедуру. ДЕйствительно работает. Так …   7.05.2012 21:56


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.05.2024 1:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name