Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в файл. [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо