Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизЗапись в файл. Найти похожие ветки
← →
Janna (2005-02-20 23:26) [0]Всем привет.
Столкнулась с небольшой проблемой. В TEdit набираю слово, жму на кнопку и слово должно записаться в файл. Тут проблем нет. Но я не представляю как реализовать проверку на наличие в файле заносимого вновь слова. Короче, как исключить повторение слов?
Все слова русские, различной длины.
← →
Virgo_Style © (2005-02-20 23:42) [1]Если по-простому, то
- загрузить файл в ListBox: LoadFromFile
- проверить наличие строки: ListBox.Items.IndexOf()
- добавить, если ее еще нет: ListBox.Items.Add()
- сохранить файл: SaveToFile
← →
Anatoly Podgoretsky © (2005-02-20 23:44) [2]Слова отдельно по одному на строку, если так то очень подзодит TstringList
← →
default © (2005-02-20 23:47) [3]по-видимому, слова в файл будет заносить пользователь
значит их суммарная длина не будет велика
тогда пишешь первое слово в сортируемый TStringList
записываешь его в файл
при записи второго через TStringList.Find
определяешь не записано-ли такое уже слово в файл если нет добавляешь его в TStringList и в файл и тд.
поскольку TStringList сортируемый скорость проверки повторяемости слов будет высока(работает двоичный поиск)
← →
Anatoly Podgoretsky © (2005-02-20 23:54) [4]А зачем его искать, проще установить свойство не разрешающие дубликаты и всего дело.
← →
default © (2005-02-20 23:58) [5]Anatoly Podgoretsky © (20.02.05 23:54) [4]
тут вроде про другую повторяемость идёт дело
← →
default © (2005-02-21 00:01) [6]Anatoly Podgoretsky © (20.02.05 23:54) [4]
да верно если слова записываются в файл в конце скопом
← →
Anatoly Podgoretsky © (2005-02-21 00:06) [7]А это проблемв?
LoadFromFile;
Add(Новое слово/слова)
SaveToFile;
И не надо никаких поисков и проверок.
← →
default © (2005-02-21 00:16) [8]Anatoly Podgoretsky © (21.02.05 00:06) [7]
тут каждый раз весь файл переписывается и каждый раз загружается ВЕСЬ да и поиск тоже есть только уже не в сортруемом массиве, можно отсортировать, но это дополнительное время, а в моём случае в TStringList-е содержатся слова записываемые только во время текущей секции, поиск быстрее, запись в файл быстрее, весь файл не загружается в память
← →
default © (2005-02-21 00:18) [9]Anatoly Podgoretsky © (21.02.05 00:06) [7]
мы малость о разном говорим, мы не знаем как именно будут в файл писать слова-по одному и в конце все скопом отсюда и разногласия
← →
Anatoly Podgoretsky © (2005-02-21 00:28) [10]А у тебя "пишешь первое слово в сортируемый TStringList" не надо загружать? Напоминаю вопрос "Но я не представляю как реализовать проверку на наличие в файле заносимого вновь слова". И условие в [2] хотя это тоже не проблема, хоть скопром, хоть по одну. Есть поддержка на разделение слов в самом TDtringList. Для всего остального просто нет информации в вопросе, если такая появится то можно скорректировать поведение.
← →
Плохиш © (2005-02-21 00:35) [11]И где-нибуть через день выяснится, что работают неколько пользователей, одновременно и с одним файлом ;-)
← →
Anatoly Podgoretsky © (2005-02-21 00:38) [12]Есть понятие блокировка файлов
← →
Janna (2005-02-21 00:51) [13]Спасибо всем за отзывчивость. Уточню: каждое слово в файле на новой строке, запись происходит по одному слову в конец файла. Если не сложно, подскажите самый простой и рациональный способ решения проблемы, я так поняла вариантов решения довольно много.
← →
Anatoly Podgoretsky © (2005-02-21 00:55) [14]Если порядок слов в файле не важен, то Anatoly Podgoretsky © (21.02.05 00:06) [7]
Про размер тоже не слова, но сообственно это и не важно, все равно загружать весь список в файл для быстрой работы.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.057 c