Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1109081445
Топпер
2005-02-22 17:10
2005.03.06
не главные формы на панели задач


1-1108561665
SeDOy
2005-02-16 16:47
2005.03.06
Чтение файлов с изменяющейся структурой


14-1108391657
MacroDenS
2005-02-14 17:34
2005.03.06
Загрузочный диск XP


1-1109057988
Леха
2005-02-22 10:39
2005.03.06
Как изменить системную дату


1-1108893154
XfroSt
2005-02-20 12:52
2005.03.06
мышка на форме...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский