Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование INI файлов, В процессе создания адресной книги 
:(
    Опции темы
Ordenador
Дата 10.5.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне требуется написать на VS C# в довольно краткие сроки адресную книгу. Когда думал о хранении файлов, то выбрал INI файлы. Во первых так удобнее хранить:
Код

[тут ФИО]
Телефон=909-111-22-33
Адрес=У дедушки на деревне

Во вторых когда то давно реализовывал подобное на Delphi (и вполне успешно).

Вопросов два:
1. Может все же есть другие оптимальные пути?
2. Если все же использовать INI файлы - как проще всего (и очень желательно без дополнительных библиотек) добавлять, удалять и редактировать INI?

Искал на наших и зарубежных форумах - подходящего решения не нашел (многое для меня еще слишком сложно)
PM MAIL   Вверх
Fyrklod
Дата 10.5.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1)  есть другие пути.. причем в шарпе вместо ИНИ именно они используются.. обычный XML ..  и структура там задается также как и в том же ИНИ
2) на сколько я по форуму и по разговору с некоторыми людьми понял, так в шарпе походу уже вообще убралась работа с ИНИ.. хочешь его использовать, пиши свои методы и т.д. короче стандартных нет...
--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
Ordenador
Дата 10.5.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Fyrklod
Значит либо дополнительные библиотеки, либо XML...
А если использовать XML, есть не очень сложный алгоритм записи\удаления\редактирования? Я начинающий, честно говоря сложно ориентироваться.
PM MAIL   Вверх
Fyrklod
Дата 10.5.2008, 18:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в том то и дело что ничего сложного при работе с ним нет практически как и с ИНИ в Билдере

Пример записи
Код

 XmlTextWriter xml = new XmlTextWriter(NameFile, Кодировка);
 xml.WriteStartDocument();
 xml.WriteStartElement("тут ФИО");
 xml.WriteStartElement("Телефон");
 xml.WriteString(telef);
 xml.WriteEndElement();
 xml.WriteEndElement();
xml.Close();

--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
source777
Дата 10.5.2008, 19:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Если не нужен доступ к файлу адресной книги не из программы, то проще и эффективнее всего использовать сериализацию...
Код

    [Serializable]
    struct PersonInfo
    {
        string Address;
        string Phone;
        public PersonInfo(string Address, string Phone)
        {
            this.Address = Address;
            this.Phone = Phone;
        }
        public override string ToString()
        {
            return String.Format("Адрес: {0}\nТелефон: {1}", Address, Phone);
        }
    }

Код

            Dictionary<string, PersonInfo> addresses = new Dictionary<string, PersonInfo>();
            addresses.Add("Иванов Иван Иванович", new PersonInfo("г.Москва, ул.Королёва, д.12", "572-12-45"));
            //...
            FileStream fs = new FileStream("Address.book", FileMode.OpenOrCreate);
            var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            bf.Serialize(fs, addresses);
            fs.Close();
            addresses.Clear();
            //....
            fs = new FileStream("Address.book", FileMode.Open);
            bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            addresses = (Dictionary<string, PersonInfo>)bf.Deserialize(fs);
            fs.Close();
            MessageBox.Show(addresses["Иванов Иван Иванович"].ToString());



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Ordenador
Дата 10.5.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



source777
При сериализации все хранится внутри файла?
Где можно найти статьи, желательно на русском, чтобы не закидывать тут всех вопросами, о том что это такое и как это использовать?
За пример большое спасибо, развернутый и ясный.

Fyrklod
Насколько я понимаю для использования данного кода требуется в программе где то обозначить, что я буду пользоваться XML. Где это сделать? Без этого код говорит, что XmlTextWriter это чтото не его smile
И где можно найти еще примеры использования? В частности как потом читать эти файлы?
PM MAIL   Вверх
-Mikle-
Дата 10.5.2008, 20:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата(Ordenador @  10.5.2008,  22:42 Найти цитируемый пост)
Без этого код говорит, что XmlTextWriter это чтото не его 


поставь:
Код

using System.Xml;


или пиши всегда полное имя класса System.Xml.XmlTextWriter


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Ordenador
Дата 10.5.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



-Mikle-
Спасибо. Понял принцип.

С записью в XML разобрался, реализовал все так:
Код

XmlTextWriter writer = new XmlTextWriter("address.xml", null);
writer.WriteStartDocument();
writer.WriteStartElement("Иванов Иван Иванович");
writer.WriteStartElement("Телефон");
writer.WriteString("111-11-11");
writer.WriteEndElement();
writer.WriteEndElement();
writer.Close();

Еще раз спасибо Fyrklod

Пытаюсь сейчас найти, как вывести из XML только фамилии. Я так понимаю, что:
Код

<Иванов Иван Иванович>
...
</Иванов Иван Иванович>

и собственно
Код

<Телефон>111-11-11</Телефон>

должны иметь какие то типы или другие идентификаторы...
PM MAIL   Вверх
source777
Дата 11.5.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Ordenador @  10.5.2008,  19:42 Найти цитируемый пост)
При сериализации все хранится внутри файла?
По умолчанию да, но в принципе можно указать атрибут [NonSerialized] для вычисляемых полей, чтобы их не сохранять...

Цитата(Ordenador @  10.5.2008,  19:42 Найти цитируемый пост)
Где можно найти статьи, желательно на русском, чтобы не закидывать тут всех вопросами, о том что это такое и как это использовать?
Честно говоря, не знаю, мне MSDN хватает, но он на английском... а на русском поищи в Google...


Цитата(Ordenador @  10.5.2008,  20:44 Найти цитируемый пост)
должны иметь какие то типы или другие идентификаторы
Идентификаторы делай на английском и без пробелов...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Veitmen
Дата 11.5.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

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


 




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


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

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