Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.187.121] |
|
Сообщ.
#1
,
|
|
|
Приветствую!
Пишу для себя класс, что-то типа работы с INI файлами. Но есть одна загвоздка. При StreamWriter и его Write метода, указываю позицию куда писАть, буфер и все такое, а он текст в конец пихает. Вопрос заключается в следующем: Есть ли какая функция Replace'мента. Тоесть если в файле куку=1 меняю=2 нет=5 как поменять меняю=2 на неменяю=3. Есть какие идеи? Или я что-то пропустил?Implementation of INI files нету в .НЕТе а жаль. |
Сообщ.
#2
,
|
|
|
Господи, ну конечно же пропустил. Вещь под названием XML. Про ini нужно забыть и как можно быстрее. В противном случае можно заюзать регулярные выражения и соорудить поддержку ini, но кто бы мне объяснил зачем?
|
Сообщ.
#3
,
|
|
|
Нужда такая:) Для себя... вещь то удобная, ничем не хуже для зранения настроек.
|
Сообщ.
#4
,
|
|
|
Намного проще (особенно если для себя) работать со стандартным XML а не с старинным INI. Например я храню настройки в таком фийле:
<br><?xml version="1.0" encoding="windows-1251"?><Configuration><br><Set name="SearchColumns.ProductionInfo" value="System.Collections.ArrayList" type="string[]" array="Наименовение продукции Торговая марка Модели Изготовитель" /><br><Set name="SearchColumns.Contacts" value="System.Collections.ArrayList" type="string[]" array="Должность Имя Примечания" /><br><Set name="ConnectString" value="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=OTP;Data Source=ANDREYA;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ANDREYA;Use Encryption for Data=False;Tag with column collation when possible=False;App=PClient v0.70;" type="string" /><br><Set name="SavePath" value="" type="string" /><br><Set name="InitializeCulture" value="False" type="bool" /><br></Configuration><br> и это НАМНОГО удобнее и быстрее в реализации чем INI |
Сообщ.
#5
,
|
|
|
Уговорили:) Счас нарою в МСДНе инфу о XMLWrite и Read... буду в XML пихать настройки программы...просто наверное год сидел на Дельфи, а потом год на Билдере, там все время с ИНИ файлами игрался, потом на Студию перебрался и влюбился в С#
Может есть где доки почитать на русском как с XML работать в С#? |
Сообщ.
#6
,
|
|
|
Да нафиг на русском, глянь на XMLNodeReader класс (например метод Read) там будет пример.
|
Сообщ.
#7
,
|
|
|
kl, если можно обьясни на пальцах как это все делается. Мне нужно записывать в файл настройки и считывать настройки.Я понял нужно создать XmlTextReader r=new XmlTextReader(...) XmlTextWriter w = new XmlTextWriter(...);
дфльше если я пишу w.WriteString("blabla"); то документ всеравно не изменяется. Пример документа, который нужно получить: <br><sklad><br> <pivo proizvoditel="baltika" sorta="10"><br> <nazvanija><br> <ap1>Vkusnoje</ap1><br> <ap2>Gorkoje</ap2><br> </nazvanija><br> </pivo><br> <vodka proizvoditel="alyta" sorta="4"><br> <nazvanija><br> <ap1>Anisovaja</ap1><br> <ap2>S percem</ap2><br> </nazvanija><br> </pivo><br> </sklad><br> И как запихать array strings и считать их, допустим если я хочу, чтобы для каждого сорта была определена цена и год выпуска? |
Сообщ.
#8
,
|
|
|
С write'om вроде разобрался Не могу понять как поменять в существующем ХМЛ какиенить атрибуты... Кто в этом разбирается, обьясните плиз:) Ато я уже закопался:) Голова кипит...
|
Сообщ.
#9
,
|
|
|
Ну вот, покапался. Сделал вывод, что ХМЛ не очень подходят для хранения малых настроек, которые постоянно могут меняться
Насколько я понял, чтобы изменит чтото в ХМЛ, нужно закидывать настройки в буффер, изменить и заного закинуть в ХМЛ(или я что-то недосмотрел?). Чтобы получить стринг из середины ХМЛ, нужно пройти readом до него 8-\ Блин, или я настолько запарился, что не вижу элементарных вещей, или и вправду все так тяжко с ХМЛом. |
Сообщ.
#10
,
|
|
|
Цитата Technos, 18.07.03, 17:46:28 Ну вот, покапался. Сделал вывод, что ХМЛ не очень подходят для хранения малых настроек, которые постоянно могут меняться Подходит не менее чем ini. Цитата Насколько я понял, чтобы изменит чтото в ХМЛ, нужно закидывать настройки в буффер, изменить и заного закинуть в ХМЛ(или я что-то недосмотрел?). Вовсе нет. Смотри метод что-то типа SelectNodes (сейчас не могу точно сказать, извиняй). В качестве параметра передается XPath-expression. Если с XPath не знаком - ознакомься, без этого никуда. Здесь есть доки на русском. Цитата Чтобы получить стринг из середины ХМЛ, нужно пройти readом до него 8-\ Аналогично Цитата Блин, или я настолько запарился, что не вижу элементарных вещей, или и вправду все так тяжко с ХМЛом. Запарился. Такие вещи за день не делаются |
Сообщ.
#11
,
|
|
|
Спасибо за линк:) ХМЛ такой огромный:) МОГУЧ! Буду копаться. Еще раз большое спасибо за хелп!
|
Сообщ.
#12
,
|
|
|
А как насчет безопасности? ;D
|
Сообщ.
#13
,
|
|
|
Цитата BeginningAlex, 08.08.03, 13:45:38 А как насчет безопасности? ;D Какой безопасности? Ты о чем? |
Сообщ.
#14
,
|
|
|
Извините, может вопрос мой дурной (ведь я зеленый новичек), но разве не может пользователь в том же блокноте взять и изменить хмл файл с вашими настройками, испортив выполнение программы и уничтожив информацию. ???
|
Сообщ.
#15
,
|
|
|
Если он хочет что-то испортить, в программе, которую сам же купил - это его дело. С таким же успехом, он может испохабить реестр или вовсе стереть ехе с диска
|