Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2011, 11:01   #1
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию Работа с ini файлами

Поделитесь своими мыслями вот по какому вопросу:

Есть тексовый файл содержащий 100000 строк со структурой ini.
Всё прекрасно но огорчает довольно медленная скорость чтения/записи.

Вижу два пути решения проблемы:

1) Отображение файлов в память.
За - если я правильно понял я смогу использовать стандартные функции для работы с ini (или это не так?). Увеличение скорости (Да?). На время работы запрещяю другим программам писать в этот файл.
Против - никогда не пользовался, нужно будет с этим разбираться.

2) Использую TStringList; загружаю строки из файла и работаю со списком строк. По мере надобности SaveToFile.
За - скорость.
Против - придётся делать свои функции. Не смогу запретить другим программам писать в этот файл (или можно как нибудь запретить?)

Спасибо.

Последний раз редактировалось avd; 04.02.2011 в 11:58.
avd вне форума Ответить с цитированием
Старый 04.02.2011, 11:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не смогу запретить другим программам писать в этот файл
это, как раз таки сделать очень просто. Досточно открыть его на чтение в монопольном режиме... (после TStringList.LoadFromFile(...) и захватить...)

а Вы уверены, что INI файл на 100 тыс строк - это подходящее решение?
Тут, как бы, уже для БД задача... нет?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.02.2011, 11:40   #3
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Цитата:
Досточно открыть его на чтение в монопольном режиме... (после TStringList.LoadFromFile(...) и захватить...)?.
Понял.

Цитата:
а Вы уверены, что INI файл на 100 тыс строк - это подходящее решение?
Совершенно не уверен.

Цитата:
Тут, как бы, уже для БД задача... нет?...
К сожалению я малограмный, БД никогда не пользовался, а время не ждёт.

Задача в общем такая - записывать в log файл события типа
10:50:12=датчик сработал
итд
Ну и в случае необходимости просматривать (программой).
avd вне форума Ответить с цитированием
Старый 04.02.2011, 11:48   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
10:50:12=датчик сработал
Малюсенькая субд, типа TinyDB или KeyDB. Будет и скорость, и поиск, и запрет на запись извне, и вообще, будет счастье...
_SERGEYX_ вне форума Ответить с цитированием
Старый 04.02.2011, 12:22   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от avd Посмотреть сообщение
Задача в общем такая - записывать в log файл события
CreateFile() / WriteFile() / CloseHandle()

Работает мнгновенно, даёт просматривать из фар изменения на лету, скорость работы особо не зависит ни от количества строк, ни от размера файла. Какие там ещё ини, стринглисты и базы данных.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.02.2011, 12:43   #6
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Цитата:
CreateFile() / WriteFile() / CloseHandle()
А потом ?

У меня почему возникла мысль про ini - получилось бы очень просто

[01.02.2011]
09:50:05=ljvukuyv
09:55:05=lrd64rd64
.....
[02.02.2011]
10:50:05=654646
10:55:05=54vt5ert4tre35
.....

Если нужно просмотреть задал нужную дату, прочитал секцию, вывел в грид
А насчёт 100000 может я погорячился.

Всем спасибо, буду думать.

Последний раз редактировалось avd; 04.02.2011 в 13:21.
avd вне форума Ответить с цитированием
Старый 04.02.2011, 13:21   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Еще есть такая штука TDataFile. Принцип тот же, что и ини. Работает с большими размерами файлов, запоминает свойства strings, font, шифрует данные и т.п. Не уверен, будет ли работать быстрее, но можешь попробовать.... Я его всегда вместо ини использую.
_SERGEYX_ вне форума Ответить с цитированием
Старый 04.02.2011, 13:42   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> А потом ?

что потом? Задачи создания и обработки логов — это две разные задачи.
Никто не мешает создавать лог со структурой ini для дальнейшего анализа.

> У меня почему возникла мысль про ini - получилось бы очень просто

Ну вот при изменении даты и сбрасывайте её в [ ... ], кто мешает?


> Если нужно просмотреть задал нужную дату, прочитал секцию, вывел в грид

Опять же, обработка логов — это отдельная песня. Для неё я бы советовал мапить файл в память и там уже искать.


> А насчёт 100000 может я погорячился.

Ну это как бы для разминки. Серъезный проект при отладке может за час несколько гигабайт логов нагенерить, их потом неделями изучать можно.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.02.2011, 14:36   #9
ParaSenok
 
Регистрация: 03.08.2010
Сообщений: 9
По умолчанию

лучше юзать бд... тот же ms access, или absolute database... или что нить из бесплатного
если всё таки хочешь писать лог в файл.. то контролируй его размер.. при увеличении размера лог-файла... лучше создать еще один новый

у меня была прога.. писала лог подключения к фт..и возникающие ошибки при этом... так пару раз было фтп отваливалось..и файл весил более 1,5ГБ
ParaSenok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с файлами ini WinMen Общие вопросы Delphi 3 08.11.2010 10:43
Работа с ini файлами jocry Общие вопросы Delphi 4 14.01.2009 16:51
Компонент Memo и работа с *.ini-файлами nerZEROn Общие вопросы Delphi 11 08.01.2009 16:31
работа с INI файлами Titan123 Общие вопросы Delphi 1 30.08.2008 16:31
работа с .ini файлами PAVEL315 Общие вопросы Delphi 3 22.11.2006 22:28