169 похожих чатов

Глянула в сторону TMemIniFile. Когда вы делаете UpdateFile? Не могу

сообразить, потому как TIniFile у нас просто создается, по надобности из него читается, пишется, но сам он нигде не уничтожается

30 ответов

45 просмотров

Я делаю при закрытии приложения, т.к. у меня в этом TMemIniFile настройки интерфейса, типа размер, положение окон, состояние чекбоксов и т.п. Проблема с обычным TIniFile на Delphi7 в том что он крайне медленно работает. За каждым параметром лазит в файл отдельно, предположительно открывая и закрывая файл. Но, если программа завершилась нештатно, то настройки в файл не сбросятся, останутся с прошлой сессии. Если запустить несколько экземпляров программы работающих с одним ini - то кто последний закроется, соответственно запишет этот файл - того и тапки.

Ну можно в onIdle приложения, если флаг Modified установлен у meminifile сохранять например

Владимир Аксенов
Я делаю при закрытии приложения, т.к. у меня в это...

А я обычно после закрытия очередной модальной формы

Владимир Аксенов
Тоже можно, только непонятно зачем. :)

Понятное дело, чтобы не хранить в лишней сущности параметры закрытой(ых) форм до закрытия приложения

Ed Doc
Понятное дело, чтобы не хранить в лишней сущности ...

Не понял. Я при закрытии формы записываю в MemIni ее параметры, но на диск зачем записывать? У меня формы очень часто открываются/закрываются, зачем диск дергать? Закончим работу - запишем в файл, а до этого лежит в оперативке и туда же пишем/читаем, быстро. Насколько я понимаю, TMemIniFile при создании читает файл с диска, а по UpdateFile записывает себя на диск. По сути, файл - это средство обмена данными, а то что интерфейс/методы при работе с TMemIniFile такие же как и у TIniFile - это просто так совпало :)

Катерина-Свиридова Автор вопроса
Владимир Аксенов
Я делаю при закрытии приложения, т.к. у меня в это...

Я сейчас вижу тормоза при зачитывании и в D11. Там изначально выбран неправильный формат хранения конфигурации. Кто ж думал, что в файлы станут такими большими) Но у людей работает, потому поменять не могу. В общем, в большом раздумье. Поэтому пока лишних движений не делаю. Все тестировать надо

Владимир Аксенов
Не понял. Я при закрытии формы записываю в MemIni ...

А, вот в чем дело. Я немного попутал, я про jsontool говорил - там в пределах формы создаётся глобальный объект, хранящий настройки формы. TMemIniFile для меня новая штука, потом поизучаю

Катерина Свиридова
Я сейчас вижу тормоза при зачитывании и в D11. Там...

У меня сейчас ini-файл с настройками приложения имеет размер 92КБайт, при работе через TIniFile тормоза были очень заметными, после перехода на TMemIniFile вопрос с тормозами отпал.

Ed Doc
А, вот в чем дело. Я немного попутал, я про jsonto...

Я на главной форме создаю глобальный объект INI - и все формы с ним работают. Один раз при старте программы он зачитывается из файла, один раз при закрытии программы записывается в файл. По большому счету, при таком подходе несущественно чего там внутри - ini или json.

Владимир Аксенов
Я на главной форме создаю глобальный объект INI - ...

А если программа внезапно упадёт, все настройки ранее закрытых форм всё?

Ed Doc
А если программа внезапно упадёт, все настройки ра...

а если она упадет во время сохранения, и тогда вообще хана))

Ed Doc
А если программа внезапно упадёт, все настройки ра...

Да, я только что про это тут писал. :) Настройки всё - только из последней сессии. А из предыдущей - как были в файле так и прочитаются. Файл же целиком пишется/ читается, а не по одному параметру, как TIniFile

zamtmn
а если она упадет во время сохранения, и тогда воо...

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

Катерина-Свиридова Автор вопроса
Ed Doc
Это не наш метод © 😊

Я твой метод так и не понял, чего ты там такого ответственного хранить что бы над этим трястись и постоянно в файл скидывать. У меня даже если файл совсем грохнуть - ничего смертельного не случится, ну откроются окошки с дефолтным положением и размером, ну колонки в гридах будут с дефолтным положением и размером и видимостью, чего надо - юзер натыкает. Обычно я просто копирую программу вместе с настройками с другого компа с аналогичным монитором, что бы координаты более-менее нужные были.

Катерина Свиридова
600кб ) И это все в памяти держать? ))

Если эти 600кб - в одном экземпляре, а не на каждое окошко, то не вижу никаких проблем в этом размере.

Владимир Аксенов
Я твой метод так и не понял, чего ты там такого от...

Отсутствие глобального объекта для всей программы и необходимости взаимодействовать с ним из всех форм с тянущимися зависимостями в uses

Ed Doc
Отсутствие глобального объекта для всей программы ...

А с объектом Database ты что, не так же взаимодействуешь? У меня Ini лежит на той же форме что и Database, поэтому в uses в 99,99% форм оно и так есть.

Ed Doc
Это другое 😊

Двойных стандартов никто не отменял? :)

Ed Doc
Отсутствие глобального объекта для всей программы ...

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

Владимир Аксенов
Двойных стандартов никто не отменял? :)

Честно говоря, я щас навскидку не вспомню, почему я решил сделать так, как описал. Вспомню - напишу

Ed Doc
Честно говоря, я щас навскидку не вспомню, почему ...

Я могу предположить, что компонент который сует настройки формы в json, не умеет этот json шарить с другими компонентами. Просто так написали, в расчете на одну форму.

Владимир Аксенов
А в случае твоих неглобальных, они так же где-то б...

Они читают/пишут все тот же один файл с конфигом. А, вспомнил. Есть форма с конфигурацией настроек приложения. Как только ты меняешь настройки приложения, изменения пишутся в файл. После закрытия этой формы, ниже лежащие/вновь открываемые формы сразу читают изменённые глобальные настройки из конфигурационного файла. Это касается тем и i18n

Ed Doc
Они читают/пишут все тот же один файл с конфигом. ...

Если это одна и та же запущенная программа - то что мешает ей читать из своей памяти класса TMemIni/etc а не из файла? Зачем программа сама с собой через файл общается? Форма конфигурации пишет не в файл а в буфер в памяти, и все оттуда его и читают и туда пишут. Буфер один раз считывается из файла при старте, и один раз сбрасывается на диск, по окончании работы программы. Зачем чаще? Единственный аргумент сброса файла на диск - это если его читает кто-то еще. Но ты это не озвучил, или я не понял.

Владимир Аксенов
Если это одна и та же запущенная программа - то чт...

Э... У нас в кишлаке часто свет вырубают... нече?

Неъматжон
Э... У нас в кишлаке часто свет вырубают... нече?

А вам кроме ini-файла на компе больше сохранять нечего? ИБП не рассматривается?

Похожие вопросы

Обсуждают сегодня

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
@sand_witch скорее к тебе вопрос, добавил в .cabal webdriver-w3c и вот такая ошибка от nix develop error: Package ‘script-monad-0.0.4’ in /nix/store/7vdxbra0kwbr0ys0kc5...
Fedor
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта