none
файл конфигурации RRS feed

  • Вопрос

  • Здравствуйте, у меня возникла внезапная проблема!

    Я как обычно хотел сделать как бы файл конфигурации в обычном текстовом формате .ini , но у меня не получилось добиться 100% результата так как  мне надо было при запуске проверять и записывать не сколько вещей:

    1)записывать значение переменных.

    2)проверять цвет кнопок(он изменяемый) и записывать в файл 't'  или  'f'.

    3)проверять видимость(Visible) других кнопок и записывать в файл 't'  или  'f'.

    4)записывать значение других переменных.

    А при запуске приложения обратные действия.

    В принципе с запуском у меня всё получилось на 100% ,а вот закрытие всегда сопровождается

    не выполнением 3 пункта(потом сам спец проверял и ставил везде 't' и всё равно при закрытии изменялось на 'f'

    из-за этого при последующем запуске все кнопки подчиняющиеся файлу становились не видимыми!!!

    вот код запуска:

    FileInfo file = new FileInfo("C:\\Полигон.ini");
    if (file.Exists)
    {
    StreamReader reader = new StreamReader("C:\\Полигон.ini");
    
    kill = Convert.ToInt32(reader.ReadLine());
    oneshot = Convert.ToInt32(reader.ReadLine());
    longshot = Convert.ToInt32(reader.ReadLine());
    
    if (reader.ReadLine().ToString() == "t")
    button2.BackColor = Color.Green;
    else button2.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
     button3.BackColor = Color.Green;
    else button3.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button4.BackColor = Color.Green;
    else button4.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button12.Visible = true;                
    else button12.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button13.Visible = true;                
    else button13.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button14.Visible = true;                
    else button14.Visible = false;          
    
    rec1 = Convert.ToInt32(reader.ReadLine());
    rec2 = Convert.ToInt32(reader.ReadLine());
    rec3 = Convert.ToInt32(reader.ReadLine());

    вот это код закрытия:

    StreamWriter writer = new StreamWriter("C:\\Полигон.ini",false);      
                writer.WriteLine(kill.ToString());
                writer.WriteLine(oneshot.ToString());
                writer.WriteLine(longshot.ToString());
    
                if (button2.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button3.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button4.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button12.Visible == true)/
                    writer.WriteLine("t");        /это
                else writer.WriteLine("f");    /
                                                        /
                if (button13.Visible == true)  /
                    writer.WriteLine("t");         /не                                            
                else writer.WriteLine("f");     /                                        
                                                        /
                if (button14.Visible == true)/
                    writer.WriteLine("t");       /работает
                else writer.WriteLine("f");     /
    
                writer.WriteLine(rec1.ToString());
    
                writer.WriteLine(rec2.ToString());
    
                writer.WriteLine(rec3.ToString());

    Помогите очень надо)))

    Заранее спасибо!!!

    26 марта 2014 г. 19:43

Ответы

  • Чем Вас не устраивает стандартный файл конфигурации приложения .NET? Вы не знаете, как им пользоваться?

    Добавьте в проект файл настроек (.settings), если мастер проекта этого не сделал, определите в нем необходимые параметры. При запуске приложения создайте объект класса Settings и прочитайте из него значения параметров:

    Settings s = new Settings();
    
    param1 = s.Param1;
    param2 = s.Param2;

    После любого изменения параметров в программе немедленно вызывайте

    s.Save();

    Это гарантирует, что данные в файле конфигурации всегда будут актуальными.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа masyanya228 30 марта 2014 г. 19:21
    27 марта 2014 г. 8:39
  • Здравствуйте, у меня возникла внезапная проблема!

    Я как обычно хотел сделать как бы файл конфигурации в обычном текстовом формате .ini , но у меня не получилось добиться 100% результата так как  мне надо было при запуске проверять и записывать не сколько вещей:

    1)записывать значение переменных.

    2)проверять цвет кнопок(он изменяемый) и записывать в файл 't'  или  'f'.

    3)проверять видимость(Visible) других кнопок и записывать в файл 't'  или  'f'.

    4)записывать значение других переменных.

    А при запуске приложения обратные действия.

    В принципе с запуском у меня всё получилось на 100% ,а вот закрытие всегда сопровождается

    не выполнением 3 пункта(потом сам спец проверял и ставил везде 't' и всё равно при закрытии изменялось на 'f'

    из-за этого при последующем запуске все кнопки подчиняющиеся файлу становились не видимыми!!!

    вот код запуска:

    FileInfo file = new FileInfo("C:\\Полигон.ini");
    if (file.Exists)
    {
    StreamReader reader = new StreamReader("C:\\Полигон.ini");
    
    kill = Convert.ToInt32(reader.ReadLine());
    oneshot = Convert.ToInt32(reader.ReadLine());
    longshot = Convert.ToInt32(reader.ReadLine());
    
    if (reader.ReadLine().ToString() == "t")
    button2.BackColor = Color.Green;
    else button2.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
     button3.BackColor = Color.Green;
    else button3.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button4.BackColor = Color.Green;
    else button4.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button12.Visible = true;                
    else button12.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button13.Visible = true;                
    else button13.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button14.Visible = true;                
    else button14.Visible = false;          
    
    rec1 = Convert.ToInt32(reader.ReadLine());
    rec2 = Convert.ToInt32(reader.ReadLine());
    rec3 = Convert.ToInt32(reader.ReadLine());

    вот это код закрытия:

    StreamWriter writer = new StreamWriter("C:\\Полигон.ini",false);      
                writer.WriteLine(kill.ToString());
                writer.WriteLine(oneshot.ToString());
                writer.WriteLine(longshot.ToString());
    
                if (button2.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button3.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button4.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button12.Visible == true)/
                    writer.WriteLine("t");        /это
                else writer.WriteLine("f");    /
                                                        /
                if (button13.Visible == true)  /
                    writer.WriteLine("t");         /не                                            
                else writer.WriteLine("f");     /                                        
                                                        /
                if (button14.Visible == true)/
                    writer.WriteLine("t");       /работает
                else writer.WriteLine("f");     /
    
                writer.WriteLine(rec1.ToString());
    
                writer.WriteLine(rec2.ToString());
    
                writer.WriteLine(rec3.ToString());

    Помогите очень надо)))

    Заранее спасибо!!!

    Проверьте значение Visible на момент закрытия.
    • Предложено в качестве ответа alexkr.net 27 марта 2014 г. 11:06
    • Отменено предложение в качестве ответа alexkr.net 27 марта 2014 г. 11:07
    • Помечено в качестве ответа masyanya228 30 марта 2014 г. 19:21
    27 марта 2014 г. 11:04

Все ответы

  • Чем Вас не устраивает стандартный файл конфигурации приложения .NET? Вы не знаете, как им пользоваться?

    Добавьте в проект файл настроек (.settings), если мастер проекта этого не сделал, определите в нем необходимые параметры. При запуске приложения создайте объект класса Settings и прочитайте из него значения параметров:

    Settings s = new Settings();
    
    param1 = s.Param1;
    param2 = s.Param2;

    После любого изменения параметров в программе немедленно вызывайте

    s.Save();

    Это гарантирует, что данные в файле конфигурации всегда будут актуальными.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа masyanya228 30 марта 2014 г. 19:21
    27 марта 2014 г. 8:39
  • Или воспользуйтесь XmlSerializer. Пользоваться очень удобно, так как работаешь непосредственно с объектом и его свойствами. XmlSerializer сохраняет объект в XML формате автоматически.
    27 марта 2014 г. 11:00
  • Здравствуйте, у меня возникла внезапная проблема!

    Я как обычно хотел сделать как бы файл конфигурации в обычном текстовом формате .ini , но у меня не получилось добиться 100% результата так как  мне надо было при запуске проверять и записывать не сколько вещей:

    1)записывать значение переменных.

    2)проверять цвет кнопок(он изменяемый) и записывать в файл 't'  или  'f'.

    3)проверять видимость(Visible) других кнопок и записывать в файл 't'  или  'f'.

    4)записывать значение других переменных.

    А при запуске приложения обратные действия.

    В принципе с запуском у меня всё получилось на 100% ,а вот закрытие всегда сопровождается

    не выполнением 3 пункта(потом сам спец проверял и ставил везде 't' и всё равно при закрытии изменялось на 'f'

    из-за этого при последующем запуске все кнопки подчиняющиеся файлу становились не видимыми!!!

    вот код запуска:

    FileInfo file = new FileInfo("C:\\Полигон.ini");
    if (file.Exists)
    {
    StreamReader reader = new StreamReader("C:\\Полигон.ini");
    
    kill = Convert.ToInt32(reader.ReadLine());
    oneshot = Convert.ToInt32(reader.ReadLine());
    longshot = Convert.ToInt32(reader.ReadLine());
    
    if (reader.ReadLine().ToString() == "t")
    button2.BackColor = Color.Green;
    else button2.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
     button3.BackColor = Color.Green;
    else button3.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button4.BackColor = Color.Green;
    else button4.BackColor = Color.Red;
    
    if (reader.ReadLine().ToString() == "t")
    button12.Visible = true;                
    else button12.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button13.Visible = true;                
    else button13.Visible = false;          
                                            
    if (reader.ReadLine().ToString() == "t")
    button14.Visible = true;                
    else button14.Visible = false;          
    
    rec1 = Convert.ToInt32(reader.ReadLine());
    rec2 = Convert.ToInt32(reader.ReadLine());
    rec3 = Convert.ToInt32(reader.ReadLine());

    вот это код закрытия:

    StreamWriter writer = new StreamWriter("C:\\Полигон.ini",false);      
                writer.WriteLine(kill.ToString());
                writer.WriteLine(oneshot.ToString());
                writer.WriteLine(longshot.ToString());
    
                if (button2.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button3.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button4.BackColor == Color.Green)
                    writer.WriteLine("t");
                else writer.WriteLine("f");
    
                if (button12.Visible == true)/
                    writer.WriteLine("t");        /это
                else writer.WriteLine("f");    /
                                                        /
                if (button13.Visible == true)  /
                    writer.WriteLine("t");         /не                                            
                else writer.WriteLine("f");     /                                        
                                                        /
                if (button14.Visible == true)/
                    writer.WriteLine("t");       /работает
                else writer.WriteLine("f");     /
    
                writer.WriteLine(rec1.ToString());
    
                writer.WriteLine(rec2.ToString());
    
                writer.WriteLine(rec3.ToString());

    Помогите очень надо)))

    Заранее спасибо!!!

    Проверьте значение Visible на момент закрытия.
    • Предложено в качестве ответа alexkr.net 27 марта 2014 г. 11:06
    • Отменено предложение в качестве ответа alexkr.net 27 марта 2014 г. 11:07
    • Помечено в качестве ответа masyanya228 30 марта 2014 г. 19:21
    27 марта 2014 г. 11:04
  • К сожалению мне не подходит этот вариант т.к. я ни чего не знаю об Xml и Html((((
    30 марта 2014 г. 19:23
  • Огромное спасибо!!!

    Я не знал о существовании таких настроек.

    Вы мне очень помогли)))

    30 марта 2014 г. 19:41
  • В том то и дело, что вам и не нужно знать как это устроено. Вы создайте объект с свойствами, изменяет их. А после этого XmlSerializer сохраняет этот объект в формате  XML. Почитайте об этом в документации MSDN. Очень легко пользоваться.
    30 марта 2014 г. 20:14