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

> ВНИМАНИЕ!

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

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


Новичок
*

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

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


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


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


a.k.a. volvo877
*****

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

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


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

 



- Текстовая версия 18.07.2025 10:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"