Ты чё там, T9 что-ли пишешь?
Ещё раз подробнее объясню как хранить слова. Допустим, у тебя англо-русский словарь. Все слова (с переводом) на букву a хранятся в файле под названием a.txt, все слова на букву b - b.txt. Пользователь пишет слово, ты от него отрезаешь первую букву (например, так: fname:='/'+GetChar(str,0)+'.txt') и уже потом открываешь нужный файл и ищеш строку уже там причем для экономии памяти можно искать без первой буквы (и слова там хранятся без первой буквы). Если слов в файле 5000(поиск идёт где-то 1 сек - у меня. я это считаю тормозами) и больше, то дроби файлы дальше. Т.е. все слова на ab хранятся в файле ab.txt и т.д. Файлов будет конечно дофига и больше, но зато поиск потом будет летать. Кстати, обрати особое внимание на символ перехода на новую строку(ставится в конце каждой строки). В Windows это 0D0A (2 байта), для нормальной же работы программы хватит и просто 0D (1 байт). Кажется, подумаешь - один байт, а если строк 100.000, то и набегает 100 Кб лишних.