Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TIniFile. Работа с Ini-файлами в Delphi. 
:(
    Опции темы
bems
Дата 26.2.2008, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Alexeis @  26.2.2008,  10:20 Найти цитируемый пост)
Это не значит, что обязательно, это ближе к слову ЧАСТО или ПРИНЯТО. Можно куда угодно его сувать. 
а ПРАВИЛЬНО - в каталоге юзера

Добавлено через 12 минут и 28 секунд
Цитата(THandle @  26.2.2008,  13:07 Найти цитируемый пост)
Результат: файл не найден, хотя находится в каталоге нашей программы, ключ невозможно прочитать, и поэтому в сообщении показывается не записанное нами в значение, а параметр Default равный в данном случае 'Not found'.

логика поиска описана в хелпе к функции WritePrivateProfileString



--------------------
Обижено школьников: 8
PM MAIL   Вверх
aktuba
Дата 26.2.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(Magik @ 26.2.2008,  09:59)
Есть способ хранить настройки и данные в файле *.dat. Такой способ лучше тем, что прочитать его содержимое (или изменить) - дело бесполезное.

С чего это ты решил? Смотря как хранится в самом файле, а в .dat можно хранить как угодно, хоть тот же .ini...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Alexeis
Дата 26.2.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(bems @  26.2.2008,  17:35 Найти цитируемый пост)
а ПРАВИЛЬНО - в каталоге юзера

  Все зависит от желаемого функционала. Что от чего должно зависеть и сохраняться. По современным требованиям это вообще должен быть либо реестр либо папка Aplication Data текущего юзера. 
  В Своем каталоге обычно хранят настройки простые программы, для которых весь дом ограничивается своей папкой. Если приложение регистрируют COM/ActiveX, то оно в любом случае зависимо от текущей ОС. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bems
Дата 27.2.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Alexeis @  26.2.2008,  20:27 Найти цитируемый пост)
По современным требованиям это вообще должен быть либо реестр либо папка Aplication Data текущего юзера. 
и я о том же. Если рееестр, то в кусте пользователя.

Цитата(Alexeis @  26.2.2008,  20:27 Найти цитируемый пост)
В Своем каталоге обычно хранят настройки простые программы, для которых весь дом ограничивается своей папкой
Если говорить о том что наблюдается, то ты прав. А если о том как надо - то изменение места хранения настроек не усложняет программу, она как была простой, так ею и останется. Но зато упростит установку, потому что не нужно проверять и устанавливать разрешения на запись в папку программы



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Lexicss
Дата 11.3.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Эх, вот бы мне эту статейку полтора года назад встретить. - когда нужно было срочно разбираться с инишками, пришлось тратить время и экспериментить. А наткнулся бы сразу на эту статеку - 5 минут и хватило б. smile
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
MetalFan
Дата 11.3.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



все расжевано так, что даже самые одаренные поймут. хотя в справке и так все нормально и подробно написано, за исключением примеров


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
THandle
Дата 12.3.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(MetalFan @  11.3.2008,  20:48 Найти цитируемый пост)
все расжевано так, что даже самые одаренные поймут. хотя в справке и так все нормально и подробно написано, за исключением примеров


К сожалению все эти "самые одаренные" даже не слышали о справке, а если и слышали, то не юзают, так как на английском, и якобы не понятно smile
PM   Вверх
Saygak
Дата 17.7.2008, 16:32 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 2.5.2007

Репутация: 1
Всего: 1



В методе ReadSectionValues в примере нужно заменить 
Код

  Ini.ReadSectionValues(Memo1.Lines);

на 
Код

  Ini.ReadSectionValues('Section1', Memo1.Lines);

PM MAIL ICQ   Вверх
THandle
Дата 17.7.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Интересно как такой пример вообще прошел в статью)) вроде бы все проверял...

Изменено.


Saygak, +1 в репу.
PM   Вверх
skeef
Дата 3.3.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Перерыл пол-инета нигде не могу найти ответ на простейший вопрос:
формат комментариев в ini файлах Delphi.
Как правильно?
PM MAIL   Вверх
Heriz
Дата 21.3.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.3.2010

Репутация: нет
Всего: нет



Вопрос: Как проверить параметр в ини файле и занести в программу?Используется параметр MainMenu1.Images:=imagesList1; и есть второй Imagelist2
 smile 
PM MAIL ICQ   Вверх
Alexeis
Дата 21.3.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(skeef @  3.3.2010,  17:57 Найти цитируемый пост)
Перерыл пол-инета нигде не могу найти ответ на простейший вопрос:
формат комментариев в ini файлах Delphi.
Как правильно? 


через ";"
например 
;comment


Цитата(Heriz @  21.3.2010,  12:18 Найти цитируемый пост)
Вопрос: Как проверить параметр в ини файле и занести в программу?

Параметр в INI можно только прочитать. Если его нет, то будет подставлено значение по умолчанию.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
RomanEEP
Дата 21.3.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



Цитата(Alexeis @  21.3.2010,  13:44 Найти цитируемый пост)
Параметр в INI можно только прочитать. Если его нет, то будет подставлено значение по умолчанию.

Для проверки наличия параметра есть функция function ValueExists(const Section, Ident: string): Boolean;

При работе с Ini файлами в Delphi 2010 столкнулся с жесткими косяками в TMemIniFile:

1) Access Violation при открытии пустых файлов в строке 727 Inifiles.pas из-за кода
  SetLength(Buffer, Size);
  Stream.Read(Buffer[0], Size); проверить size на 0 нынче не модно...

2)Для быстрого поиска подстроки используются хешированные стринг-листы в которых обновление хеша сделано крайне неграмотно:
при любом изменении стринг листа хеш перестраивается заново!
то есть если в секции есть 100 строк, то добавление 101 строки вызовет пересчет хеш функции для всех 100 строк.
Благодаря этому файл в пару сотен строк пишется секунд 5!

Использовать ини файлы ушло всякое желание когда наткнулся на юнит NativeXml - который стал бесплатен. Имеет интуитивно понятный и небольшой набор функции, который быстро заменит сохранение в ини-файлы  + большая гибкость xml + высокая скорость работы.
Для примера: время чтения с диска и распарсивания файла размеров в 500Kb (около 50000 значений) занимает 0,2с на 1800MHz.
За собой тянет один единственный модуль размеров в 6000 строк
PM MAIL   Вверх
Alexeis
Дата 21.3.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(RomanEEP @  21.3.2010,  14:34 Найти цитируемый пост)
При работе с Ini файлами в Delphi 2010 столкнулся с жесткими косяками в TMemIniFile:

А если воспользоваться старым добрым TIniFile ? Дело в том, что Ini файлы предназначены для хранения небольших объемов файлов. Тут нет оптимизации по скорости. Не подразумевается частое обращение. Простой способ сохранить уникальные данные.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
RomanEEP
Дата 21.3.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



Согласен? но TMemIniFiles создавался как оптимизированый вариант TIniFile и надо же было к 2010 году ембаркадеровцам соптимизировать так что сделали раз в 10 медленней оригинала!

ЗЫ: Еще в по поводу методов WriteFloat, ReadFloat во первых они записывают не натуральные, а действительные числа)))) а во вторых есть неприятная особенность, что если в системе сменится DecimalSeparator или IniFile будет читаться с другого компа, то эти значения просто напросту не считаются! Приходится придумывать велосипеды вроде смены разделителя при чтении из инишки или переопределения метода ReadFloat, WriteFloat
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1763 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.