Текущий архив: 2010.11.21;
Скачать: CL | DM;
Вниз
Как в ini-файле сдвинуть секцию вверх или вниз? Найти похожие ветки
← →
Гость (2010-08-16 08:45) [0]Имеется в виду работа через TIniFile.
← →
Сергей М. © (2010-08-16 09:32) [1]Средствами самого TIniFile - никак.
Да и вообще - бессмысленная затея.
← →
Palladin © (2010-08-16 10:39) [2]И какая разница что где?
← →
int64 © (2010-08-16 11:52) [3]Порядок секций в ini-файле не на что влиять не должен. Категорично.
Если влияет, то это уже твоя структура с названием ini.
← →
Гость (2010-08-16 11:55) [4]
> Сергей М. © (16.08.10 09:32) [1]
> Средствами самого TIniFile - никак.
Есть ли какие-нибудь функции, чтобы это сделать?
← →
Сергей М. © (2010-08-16 12:00) [5]
> Гость (16.08.10 11:55) [4]
Нет.
Если так уж нужны - напиши сам.
Но, повторяю, затея эта абсолютно бестолковая.
← →
brother © (2010-08-16 12:01) [6]Зачем тебе это? я не понимаю смысла!
зы. Можно конечно, например, считать все в стринглист, и перезаписать содержимое в файл в нужном порядке! НО ЗАЧЕМ?
← →
12 © (2010-08-16 12:11) [7]
> Зачем тебе это? я не понимаю смысла!
чтоб руками править?
Есть тех-поддержка, например, если прога не запускается, они в силах залезть в ини, поправить, если надо чего
А иначе - программиста дергать, чтоб выяснил почему.
программиста дороже
← →
brother © (2010-08-16 12:13) [8]> чтоб руками править?
и что мешает "прокрутить" до нужного места?
← →
Сергей М. © (2010-08-16 12:15) [9]
> 12 © (16.08.10 12:11) [7]
> чтоб руками править
А что, 2-ю (по порядку следования) секцию вручную править проще чем оную же, но 3-ю ?
Тогда это к окулисту)
← →
12 © (2010-08-16 13:19) [10]ну, если файл очень большой - может самые критичные секции вперед поставить есть смысл?
или по приоритетам/частоте сбоев рассортировать
← →
Ega23 © (2010-08-16 14:23) [11]
> ну, если файл очень большой - может самые критичные секции
> вперед поставить есть смысл?
> или по приоритетам/частоте сбоев рассортировать
XML
← →
Anatoly Podgoretsky © (2010-08-16 14:35) [12]Ctrl+X, Ctrl+V
← →
12 © (2010-08-16 15:14) [13]
> Ega23 © (16.08.10 14:23) [11]
XML
и ты?
← →
sniknik © (2010-08-16 15:25) [14]> может самые критичные секции вперед поставить есть смысл?
при создании сделай секции первыми, они там и останутся.
не нравится перенеси их руками в то место где считаешь лучше, они там и останутся...
> XML
руками править гораздо сложнее чем ini файл. (и обычно когда говоришь, что это сложнее поклонники xml возражают что не предназначено, и есть куча удобных редакторов... не против, но в теме поднят "ручной" способ)
← →
12 © (2010-08-16 16:15) [15]
> при создании сделай секции первыми, они там и останутся.
я то вообще руками делаю ini - считываю только через соотв функции
← →
Гость (2010-08-16 22:39) [16]Есть ли способ просто считать секцию в виде текста, а не в виде параметрво, а потом сохранить обратно?
← →
Сергей М. © (2010-08-16 22:51) [17]Есть.
ReadSectionValues()
А как это связано с фактическим положением секции в файле-контейнере ?
Никак)
← →
Гость (2010-08-16 23:48) [18]
> Сергей М. © (16.08.10 22:51) [17]
>
> Есть.
> ReadSectionValues()
А записать обратно?
← →
Германн © (2010-08-17 00:03) [19]
> А записать обратно?
Каждый параметр отдельно.
← →
Palladin © (2010-08-17 04:50) [20]Гости с каждым годом все того...
← →
brother © (2010-08-17 05:01) [21]Автор не ответил: зачем?
← →
RWolf © (2010-08-17 09:27) [22]
> 12 © (16.08.10 13:19) [10]
Если редактировать ini правильными редакторами (FAR, например), к любой его секции можно перейти парой нажатий клавиш.
← →
Плохиш © (2010-08-17 20:20) [23]Ну хоть бы кто-нибуть посоветовал сантехнику тмеминифайл :-))
← →
ixen (2010-08-18 07:25) [24]Если уж давать пользователю копаться в настройках программы при помощи редактирования ini файла, то сделать нужно как можно удобней для пользователя чтобы исключить всевозможные ошибки... я предлагаю написать небольшую оболочку которая будет позволять редактировать эти параметры в более удобном виде.. и сама считывать и сохранять эти параметры...
← →
Гость (2010-08-20 07:06) [25]Написал себе эту функцию. Но запись параметров по одному - чудовищно тормозная. Даже когда параметров мало, то комп. немного подвисает. Почему так - не знаю.
← →
brother © (2010-08-20 07:22) [26]нечему там подвисать! код показывай!
← →
Anatoly Podgoretsky © (2010-08-20 10:14) [27]
> Но запись параметров по одному - чудовищно тормозная. Даже
> когда параметров мало, то комп. немного подвисает. Почему
> так - не знаю.
Наверно потому, что так написал.
← →
Гость (2010-08-23 12:22) [28]
> brother © (20.08.10 07:22) [26]
>
> нечему там подвисать! код показывай!
Вы бы сами стали после такого как [20] делиться кодом?
* * *
В общем проблема в скорости записи в ini-файл. Вот простой тест:function WriteIniTest() : Boolean;
var
i1, j1 : Integer;
AppIni : TIniFile;
TimerA : Cardinal;
begin
TimerA := GetTickCount;
AppIni := TIniFile.Create("test.ini");
try
for i1 := 0 to 10 do begin
for j1 := 0 to 15 do begin
AppIni.WriteString("Asdfasdfasdf" +IntToStr(I1), "Asdfasdfasdf" +IntToStr(J1), "Asdfasdfasdf");
end;
end;
finally
AppIni.Free;
end;
ShowMessage(Format("%.3f sec.", [(GetTickCount -TimerA) / 1000]))
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WriteIniTest();
end;
У меня 3.26 секунд. Core2Duo.
Знает ли кто-нибудь способ решить проблему тормознутости ini-файла?
← →
Anatoly Podgoretsky © (2010-08-23 12:27) [29]
> Вы бы сами стали после такого как [20] делиться кодом?
Что значит делиться, никому твой код не нужен, кроме тебя самого.
← →
RWolf © (2010-08-23 12:36) [30]
> Гость (23.08.10 12:22) [28]
> У меня 3.26 секунд. Core2Duo.
0,016 секунд; Athlon 3000+, WinXP.
← →
12 © (2010-08-23 12:43) [31]1,5 сек
← →
Игорь Шевченко © (2010-08-23 12:49) [32]Ini-файлы не надо тестировать на скорость - они работают заведомо медленно
← →
Юрий Зотов © (2010-08-23 13:00) [33]
> Гость (23.08.10 12:22) [28]
> Вы бы сами стали после такого как [20] делиться кодом?
Я бы не стал, ни за что на свете. И до [20], и после [20], и даже если бы [20] вообще не было - все равно не стал бы.
Как же так? Я мучился, рожал сложнейший код работы с ini-файлом, аж целую неделю на него потратил - и вдруг поделиться. Да ни за что!
LOL !
← →
Юрий Зотов © (2010-08-23 14:39) [34]Кстати, и скорость работы с файлом (который, как правило, читается и пишется максимум несколько раз за сеанс), безусловно, крайне важна. Особенно, при Core2Duo (хотя лимитирует, конечно, диск, а не процессор).
← →
Anatoly Podgoretsky © (2010-08-23 14:45) [35]> Юрий Зотов (23.08.2010 14:39:34) [34]
Тут наверно стоит использовать i7
← →
Германн © (2010-08-23 15:00) [36]
> Кстати, и скорость работы с файлом (который, как правило,
> читается и пишется максимум несколько раз за сеанс), безусловно,
> крайне важна.
Зато у TIniFile есть куча готовых методов, в отличие от всех прочих файлов. Так почему бы не приспособить его для чтения/записи чего-нибудь другого? Например фоток любимых девушек. :) А судя по вопросу к чему-то такому дело и идет.
← →
Anatoly Podgoretsky © (2010-08-23 15:08) [37]> Германн (23.08.2010 15:00:36) [36]
То есть хочешь сказать, что все это порнография.
← →
Плохиш © (2010-08-23 17:50) [38]
> Гость (23.08.10 12:22) [28]
> У меня 3.26 секунд. Core2Duo.
VirtualBox na e6300 - 0,05 sek.
Ваш винчестер пора на помойку, т.к. скорость обработки tinifile на 90% зависит от его быстродействия.
> Знает ли кто-нибудь способ решить проблему тормознутости
> ini-файла?
Надо поменять прокладку.
PS. Хотя смысл отвечать, вы всё-равно ответов не читаете или не понимаете.
← →
Сергей М. © (2010-08-23 18:07) [39]
> способ решить проблему тормознутости
Не упираться в TIniFile, а использовать TMemIniFile - он работает с данными в ini-формате в памяти приложения, при необходимости разом выплевывая готовое в файл, что ощутимо быстрее выплевывания кусками, как это делает TIniFile.
← →
Palladin © (2010-08-23 18:29) [40]И вся эта бодяга, вся эта ветка уже неделю длится, из-за глупого желания странного, которое ни на что в программе не влияет.
> Вы бы сами стали после такого как [20] делиться кодом?
поверь, никому тут твой код нафик не обкакался... ппц... он обиделся и не стал делится "вселенской мудростью" с другими... хоть в орешник...
← →
antonn © (2010-08-23 20:36) [41]
> которое ни на что в программе не влияет.
не все что используется в программе нужно только самой программе.
[7]
"двоичность" в теме зашкаливает :(
← →
Loginov Dmitry © (2010-08-23 20:52) [42]Гость, антивирус отключить попробуй (особенно если это Nod32)
← →
Palladin © (2010-08-23 21:09) [43]да там в [7] бред, кому надо тот разберется, мне при редактировании ини файла побоку где находится секция... если количество параметров превысило какой-то "человеческий" лимит, сложный для восприятия, то проще сделать конфигуратор (отдельный или встроенный), чем вот так вот засирать программу ненужным функционалом... а в случае наличия "тыщипитсот" параметров, то их вообще нельзя в ини хранить...
← →
antonn © (2010-08-23 21:54) [44]А я менее агрессивен, секции от параметров сверху дополнительно переносом обозначаю, часто используемые или в самом верху ставлю или в самом низу.
Секции близкие по смыслу ставлю рядом (например настройки сетевые, порты и хосты).
> а в случае наличия "тыщипитсот" параметров, то их вообще
> нельзя в ини хранить...
Программы бывают разные, вот сейчас смотрю в файл с 96-ю секциями, от 5 до 17 параметров в каждой. Хранить, оказывается, можно, молния с неба не бьет, по рукам линейкой тоже никто не стучит. Почему-то все прекрасно работает.
← →
Loginov Dmitry © (2010-08-23 22:30) [45]А реальная инишка с параметрами 150 КБ - слабо? :)
← →
Германн © (2010-08-24 02:35) [46]
> Loginov Dmitry © (23.08.10 22:30) [45]
>
> А реальная инишка с параметрами 150 КБ - слабо? :)
>
А я ведь не зря упомянул про "фотки". Ведь был уже на ДМ подобный вопрос. Только там было ещё хуже. Там "эти фотки" совали не в ини-файл, а в реестр. В ини ещё не так страшно. Страдает только программа автора. А в реестр!
← →
sniknik © (2010-08-24 08:09) [47]> 96-ю секциями, от 5 до 17 параметров в каждой
не представляю для чего может быть нужно такое количество параметров кроме как для описания списка чего то конкретного (ну вот реально зачем столько настроек именно программе?)
а если так то был у нас аналогичный случай... настройки весов описывались в ini файле, а т.к. прога выступала сервером, а не работала с одними конкретными то секций набиралось достаточно (максимум было 131 весы + естественно пара секций с собственно настройками программы).
раз двести наверно пожалели что так сделно... каждый раз когда на клиенте нужно было например получить список, или отчет по конкретному устройству, или настраивая клиентские программы, на них тоже нужно знать куда можно посылать загрузки (был бы доступ к данным сервера, эта настройка отпала бы сама по себе).
вот с тех пор, в своих прогах четко разделяю настройки программы и данные программы (в описанном выше весы/их описание это данные, а собственно настройки проги всего пара секций)
вот у тебя скажи эти все 96 секций содержат настройки именно программы?
← →
Loginov Dmitry © (2010-08-24 12:49) [48]
> В ини ещё не так страшно. Страдает только программа автора.
Дык да, что ту такого особенного. Сам когда-то делал прогу специально для сохранения картинок в ини. Правда работало через TMemIniFile, поэтому без тормозов.
> Там "эти фотки" совали не в ини-файл, а в реестр.
Жесть. Это ж как винда тормозить будет после этого!
← →
Игорь Шевченко © (2010-08-24 12:55) [49]
> Жесть. Это ж как винда тормозить будет после этого!
никак не будет
← →
Loginov Dmitry © (2010-08-24 13:38) [50]
> никак не будет
После любого внесения изменений в реестр винда через 5 секунд сохраняет измененный раздел реестра в файл. Маленький реестр сохраняется быстро. Большой - дольше, мне так думается. А во время сохранения винда блокирует все функции записи в раздел реестра. Тормоза будут ощущать в первую очередь программы с отключенной "ленивой записью" (в момент закрытия ключа реестра).
← →
Игорь Шевченко © (2010-08-24 15:03) [51]Loginov Dmitry © (24.08.10 13:38) [50]
> мне так думается
неверно думается
> А во время сохранения винда блокирует все функции записи
> в раздел реестра
неверно думается
← →
Loginov Dmitry © (2010-08-24 16:38) [52]
> > А во время сохранения винда блокирует все функции записи
> > в раздел реестра
>
>
> неверно думается
А как верно?
← →
Игорь Шевченко © (2010-08-24 18:32) [53]
> А как верно?
Соломон, Руссинович, "Внутреннее устройство Windows"
← →
antonn (work) (2010-08-24 19:44) [54]
> вот у тебя скажи эти все 96 секций содержат настройки именно
> программы?
Это ресурсы для игрушки, да все секции используются. Настройки ли это программы? Судя по тому, что они задают параметры и режимы работы игрового движка - вполне себе настройки программы.
← →
Loginov Dmitry © (2010-08-24 20:47) [55]
> > А как верно?
>
> Соломон, Руссинович, "Внутреннее устройство Windows"
Я в первую очередь знакомлюсь со справкой. Не думаю, что она врет. Справка по функции RegFlushKey гласит:
> Calling RegFlushKey is an expensive operation that significantly
> affects system-wide performance as it consumes disk bandwidth
> and blocks modifications to all keys by all processes
> in the registry hive that is being flushed until the
> flush operation completes.
Т.е. пока выполняется сохранение раздела реестра, любые его модификации блокируются.
По поводу первого, согласен:
> The RegFlushKey function writes out the data for other keys
> in the hive that have been modified since the last lazy
> flush or system start.
Т.е., согласно справке, лишнее не пишется.
Но все равно, винда отслеживает изменения реестра, создает точки восстановления, восстанавливает из них и т.д., и если раздел реестра ~200МБ, то производительности это как минимум не добавит :)
← →
Игорь Шевченко © (2010-08-24 20:56) [56]
> Т.е. пока выполняется сохранение раздела реестра, любые
> его модификации блокируются.
что есть "раздел реестра" в твоем понимании ?
и вообще, зачем делать предположения, есть regmon, есть filemon, есть procmon, который их объединяет - ты вполне можешь продемонстрировать тормоза на практике.
← →
George © (2010-08-24 22:45) [57]Удалено модератором
← →
Гость (2010-08-25 08:41) [58]
> Сергей М. © (23.08.10 18:07) [39]
>
> > способ решить проблему тормознутости
>
> Не упираться в TIniFile, а использовать TMemIniFile - он
> работает с данными в ini-формате в памяти приложения, при
> необходимости разом выплевывая готовое в файл, что ощутимо
> быстрее выплевывания кусками, как это делает TIniFile.
Молодец! Спасибо! Действительно, время показывает 0.000 sec. Надо будет всегда TMemIniFile использовать.
← →
Loginov Dmitry © (2010-08-25 09:17) [59]
> что есть "раздел реестра" в твоем понимании ?
В моем понимании есть раздел реестра, например HKLM, HKCU и т.д.
А есть ключ реестра: HKLM\Software\ и т.д.
> и вообще, зачем делать предположения, есть regmon, есть
> filemon, есть procmon, который их объединяет - ты вполне
> можешь продемонстрировать тормоза на практике.
Я уже достаточно экспериментировал с реестром. Блокировка есть - это 100%, безо всяких regmon, filemon. Если хочется в этом поковыряться, ну что ж, вперед! Я не против.
← →
Игорь Шевченко © (2010-08-25 10:04) [60]Loginov Dmitry © (25.08.10 09:17) [59]
То есть, ты ляпнул, а другие должны экспериментировать ? :)
← →
Loginov Dmitry © (2010-08-25 10:44) [61]Не знаю, кто из нас тут что ляпнул. Я привел цитату из msdn. Эти данные я сумел подтвердить на практике.
Этого недостаточно?
Страницы: 1 2 вся ветка
Текущий архив: 2010.11.21;
Скачать: CL | DM;
Память: 0.63 MB
Время: 0.011 c