инициализация хэша, массив из списков |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
инициализация хэша, массив из списков |
Insomnia |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
Помогите пожалуйста разобраться. Создаю хэш-таблицу со списками. В конструкторе списка вылетает с ошибкой нарушение доступа.
Прикрепленные файлы Hash_vocabulary.rar ( 210.11 килобайт ) Кол-во скачиваний: 335 |
IUnknown |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Файл un_hash:
constructor Class_Hash_Table.Create; ... из-за чего класс не инициализировался правильно, и, естественно, в его конструкторе происходил сбой. |
Insomnia |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
Файл un_hash: constructor Class_Hash_Table.Create; ... из-за чего класс не инициализировался правильно, и, естественно, в его конструкторе происходил сбой. Спасибо большое ! понял ошибку, исправил , дополнил модуль, заработало ! |
Insomnia |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
похожая проблема возникла в функции поиска в списке, если я при инициализации хэш-таблицы в хэш-ф-ции получаю одинаковые индексы в массиве ( 'мама' и 'книга' оказались в ячейке массива i = 8 ). В списке находится 1 запись, и при добавлении другой, происходит сбой. Это обычный линейный поиск в списке, и вроде логика в последовательности шагов присутствует. Ошибкой моей может быть неправильное описание ?
Сообщение отредактировано: Insomnia - Прикрепленные файлы Hash_vocabulary.rar ( 210.71 килобайт ) Кол-во скачиваний: 303 |
IUnknown |
Сообщение
#5
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Точную последовательность шагов для получения сбоя опиши (вот запустил я твою программу, и чего? Куда нажать, чтоб сбой своими глазами увидеть?). Ибо у тебя на данный момент что добавление, что поиск - обработчики пустые, ни фига не вызывается.
|
Insomnia |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
ой,извини, я не четко сформулировал. При инициализации, хэш-таблица породила коллизию ( 'мама' и 'книга' оказались в ячейке массива i = 8 ).
|
IUnknown |
Сообщение
#7
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Блин. И что?
Цитата В списке находится 1 запись, и при добавлении другой, происходит сбой. Как сбой увидеть? |
Insomnia |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
кнопка 'создание' -> выбор файла txt -> бах!
|
IUnknown |
Сообщение
#9
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Никакого "бах", отображается пустая форма, и всё
|
Insomnia |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
что за магия ! Сделал скришнот, еще раз перезалил архив.
Эскизы прикрепленных изображений Прикрепленные файлы Hash_vocabulary.rar ( 210.71 килобайт ) Кол-во скачиваний: 302 |
IUnknown |
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Так. Сорри, это мой глюк, я открывал старый файл txt...
По поводу твоей программы... Объясни мне, зачем вот эти пляски: Цитата constructor Class_List.Create; , и потом, отсюда же вытекает: Цитата function Class_List.search_to_list; constructor Class_List.Create; А ты чего делал? Создавал список с заглавным (заметь, неинициализированным!!!) звеном, потом добавлял объекты в начало списка (в Class_List.add_to_list, посмотри внимательно, новый-то элемент добавляется ПЕРЕД существующими, а не ПОСЛЕ), а потом, думая, что надо пропустить заглавный элемент, ты пропускал инициализированные данные, и начинал работать с мусором. Вот тебе и глюки. Так что либо выкинь заглавное звено, либо добавляй данные в конец списка. |
Insomnia |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
ого. Я балбес. Спасибо за помощь !
P.S. к чертям уберу список с заглавным звеном. |
Insomnia |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
У меня возникли 2 проблемы по ходу реализации кода. первая небольшая : не пойму, почему при добавлении слова в файл вылетает ошибка несоответствие типов в proc seek . это из-за того, что у меня текстовый файл, а не типизированный ?
вторая попроблемнее..осуществляю поиск слова в словаре. И по хорошему, поиск должен осуществляться по ключу, правильно ? Связь между кнопкой и файлом реализует proc Search_in_Hash_Table (в un_file) корректна ? Прикрепленные файлы Hash_vocabulary.rar ( 220.18 килобайт ) Кол-во скачиваний: 317 |
IUnknown |
Сообщение
#14
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Цитата это из-за того, что у меня текстовый файл, а не типизированный ? Абсолютно точно. Seek не умеет работать с текстовыми файлами, только с типизированными или бестиповыми.Со второй проблемой - вроде все верно, но зачем ты i := Obj.H; делаешь в Search_in_Hash_Table - непонятно. |
Insomnia |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
подсткажите пожалуйста , есть ли замена proc seek и/или как мне требуется написать алгоритм добавления слова в конец файла ?
P.s. все связал в методе поиска слова. Когда хочу вывести в таблицу поисковое слово с переводом, мне выводит только 1 слово (мама - mother ) . Я так понял , он считывает только 1 запись мою. Как мне сделать что бы с определенной строки печатал ? ии, при поиске слов инжир или яблоко пишет что слово не найдено. Это из-за того что неверно считываются данные с файла, из-за чего так происходит ? Прикрепленные файлы Hash_vocabulary.rar ( 221.3 килобайт ) Кол-во скачиваний: 316 |
IUnknown |
Сообщение
#16
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
есть ли замена proc seek Есть. Файл открыва5ется не через Reset, а через AppendКогда хочу вывести в таблицу поисковое слово с переводом, мне выводит только 1 слово Тебе повезло. Мне вообще ничего не выводит. Версия Дельфи = 2009 (Юникодная), поэтому вся твоя работа со строками через TString летит к чертям. Проверять правильность/неправильность чего-либо не могу... |
Insomnia |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: 0 |
спасибо за процедуру. ДЕйствительно работает. Так же исправил неккоректное чтение и вывод в таблицу. Вот только все не пойму как мне считывать из конкретной строки файла? И у меня время от времени выскакивает ошибка , из-за чего так происходит ?
Добавлено через 5 мин.
Сообщение отредактировано: Insomnia - |
Текстовая версия | 11.01.2025 5:33 |