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