Ненадо выдергивать слова по одиночке, надо сразу загрузить в мемо содержимое текстового файла, т.к. и первый и второй варианты работают с уже загруженным списком. Загрузка реализуется методом самого компонента TMemo:
Код:
Memo1.Lines.LoadFromFile('c:\dictionary.txt');
В первом варианте для поиска и сортировки используется компонет TStringList, собственно он и создан был для подобных операций.
Сначала список сортируется, т.к. без этого невозможен корректный поиск методом Find.
Во втором варианте делается тоже самое, что и в TStringList, только реализованы свои функции сортировки и поиска.
Сортировку расписывать особо нечего, берется первый и следующий элемент, если первый элемент больше второго, то элементы меняются местами и так до конца списка. Это не самый быстрый способ сортировки, зато наиболее простой в реализации.
С поиском тоже в принципе достаточно просто. Основное условие правильного поиска - обязательная сортировка. Берется список и сравнивается элемент из середины списка с поисковым значением. Если списочный элемент меньше, значит искомое слово находиться ближе к концу списка, если больше, то наоборот ближе к началу списка. Далее операция повторяется, только границы поисковые будут все время уменьшаться 1/2, 1/4, 1/8, 1/16 и т.д. пока не найдется нужный элемент.
Данный способ сортировки очень быстр даже для очень больших списков.
Если взять список в 100000 слов, то результат будет получен максимум за 16 проверок.