А, т.е. у тебя интерфейс а-ля Лингво. Ну, в таком случае вынужден тебя разочаровать: там дофига самописных наворотов и ухищрений использовано, и все это только для того, чтобы внешне все выглядело просто, интуитивно понятно и не вгоняюще в ступор.
Во-первых, список. Обычный ListBox не в состоянии вместить более 32К элементов. Следовательно, нужно либо полностью с самого нуля писать собственный контрол, что крайне геморно, либо идти на ухищрения - реально в список помещается только небольшая часть слов, а остальные подгружаются при необходимости в процессе поиска слова в базе и скроллинга списка в соответствующее место. Новое подгружается, старое удаляется, а скроллбар там вообще нарисованный и прилеплен снаружи, чтобы создавать иллюзию немеряности этого списка. Все просто, как каммала
.
Далее. Если ты думаешь, что с подобных программных продуктах используется формат голого текста, ты сильно заблуждаешься. Разумеется, используются внутренние форматы, в каждом словаре они свои. Разумеется, слова в этих списках не просто отсортированы по алфавиту, они еще и проиндексированы - про хэш-функции слыхал? Вот хэши грузятся в память действительно все, но это тебе не строки переменной длины, это числа (ну или какие-либо гуидо-подобные образования) и самое главное в них - их длина постоянна, независимо от длины изначального слова, на основе которого хэш был сформирован. Ты себе не представляешь, какой прирост скорости дает переход от данных переменной длины к данным с постоянным размером.
Таким образом, в первом приближении вырисовывается следующая структура хранилища данных:
1. Список хэшей слов (страница индекса, если выражаться в терминах СУБД), отсортированных для ускорения поиска;
2. Список собственно слов (страница данных), причем первичен в данном списке хэш слова, а не его текст - иначе быстрого поиска по индексу не получится;
3. Список словарных статей с переводами / значениями. Отсортирован опять-таки по хэшу для быстрого поиска. Также возможна дополнительная индексация, особенно если файл один - в этом случае он получится действительно большим, до сотни мегабайт и более, и любые средства, ускоряющие вычисления позиции, с которой надо начинать чтение, в данном случае хороши.
И так про каждую стадию работы или часть программы написать можно. Средства индексации, поиска и сортировки я, с твоего позволения, описывать не буду - не силен я в них, а Дональд Кнут так вообще целый том своей эпохальной книги "Искусство программирования для ЭВМ" посвятил именно этой теме. И я полагаю, что над каждым реальным таким продуктом не один кандидат или доктор корпели, описывая теоретическую часть и делая сравнительный анализ алгоритмов. Я не говорю, что у тебя ничего не получится, но теперь ты должен хотя бы примерно представлять, какой объем работы (и какой именно работы) тебя ждет. Удачи.