Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
1

Каким образом лучше сохранять пользовательские настройки приложения и введённые данные на локальный диск?

15.05.2018, 17:55. Показов 1354. Ответов 20
Метки нет (Все метки)

Доброго времени суток. Посоветуйте каким образом сохранять пользовательские настройки приложения и введённые данные из "dataGridView" с последующей обратной загрузкой, не используя сторонние программы, такие как "Microsoft Access", "Microsoft Excel", " Microsoft SQL Server Express LocalDB", но так что бы это было кросс платформенное решение (что то вроде текстового файла).Кросс платформенное как в отношении готового приложения, так и в процессе разработки. А не так как выше перечисленные - "на эту систему нельзя нас устанавливать ни-ни, а ЭТУ наши боссы вообще уже не поддерживают, а с этими они вааще не дружат!". И если можно, то совет с примерами кода на C# и с пояснениями к нему, так как я себя пока не очень уверенно чувствую натыкаясь на код от msdn.microsoft.com, там всё на столько абстрактно... Спасибо всем, кто откликнется!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2018, 17:55
Ответы с готовыми решениями:

Терминальная ферма: каким образом предоставить хостам сессий единый локальный диск (не сетевой!) с СХД?
Доброго времени суток! Поднимаю терминальную среду на WS2012R2 Развертывание рабочих столов...

Как сделать, чтобы при обновлении приложения в Google Play сохранялись пользовательские настройки и данные
Как сделать, чтобы при обновлении приложения в Google Play сохранялись пользовательские настройки и...

Диск рассыпался. Каким-то образом данные можно восстановить?
У знакомой рассыпался диск. Каким-то образом данные можно восстановить?

Как лучше хранить данные приложения, например, настройки
Здравствуйте. Прошу вашего совета: Разрабатываю приложение на c# (Windows Forms). Суть...

20
25 / 22 / 23
Регистрация: 18.05.2014
Сообщений: 130
15.05.2018, 18:57 2
Сериализация. Как вариант. Найти примеры в сети думаю не составит труда.
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
16.05.2018, 11:52  [ТС] 3
Цитата Сообщение от Ray1100 Посмотреть сообщение
Сериализация. Как вариант. Найти примеры в сети думаю не составит труда.
Состояние объекта, закодированного в UTF-8 или UTF-7, не сохраняется, если этот объект сериализуется и десериализуется с использованием различных версий .NET Framework.
По поводу двоичной сериализации, пока не разобрался, но там тоже есть свои "подводные камни". Насколько они рискованы для моего приложения?? По мне, так важно, что бы оно правильно работало. В сеть ему лезть нужды нет. Так-что, может быть двоичная подойдёт если она однообразно реализуется не зависимо от среды разработки и OS(и).
0
25 / 22 / 23
Регистрация: 18.05.2014
Сообщений: 130
16.05.2018, 12:01 4
JSON, xml, soap рассматривали?
1
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
16.05.2018, 16:17  [ТС] 5
Цитата Сообщение от Ray1100 Посмотреть сообщение
JSON, xml, soap рассматривали?
В качестве значений в JSON могут быть использованы:

Объект — это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки «{ }». Ключ описывается ...
...
Строка — это упорядоченное множество из нуля или более символов юникода, заключённое в двойные кавычки. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты «\» (поддерживаются варианты ", \\, \/, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке Unicode в виде \uFFFF.
То-есть те же грабли (UTF-7, UTF-8) Стандарт кодирования текста.
***
UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования текста, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII

Добавлено через 15 минут
SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.
***
Иначе говоря сериализовал данные на одной машине, перенёс на другую (а там другая версия .NET Framework) и в итоге десериализация с ошибкой.
0
483 / 396 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.05.2018, 16:38 6
nik_1712, я не понял насчёт кроссплатформенности? Чтобы работало на разных ОС? На разных фреймворках?

Добавлено через 3 минуты
Цитата Сообщение от nik_1712 Посмотреть сообщение
а там другая версия .NET Framework
И приложение скомпилированное под первую версию .Net не будет запускаться...

Добавлено через 2 минуты
Цитата Сообщение от nik_1712 Посмотреть сообщение
Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты «\» (поддерживаются варианты ", \\, \/, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке Unicode в виде \uFFFF.
То-есть те же грабли (UTF-7, UTF-8) Стандарт кодирования текста.
Ну так указывайте явно в какой кодировке сохранять и читать данные из файла.

Мне кажется, что вы необоснованно сами себе высасываете из пальца теоретические проблемы.
0
137 / 137 / 53
Регистрация: 14.06.2016
Сообщений: 467
16.05.2018, 16:41 7
json и в африке json. про кодировку правильно заметили.
0
Эксперт .NETАвтор FAQ
9856 / 4810 / 1731
Регистрация: 11.01.2015
Сообщений: 5,991
Записей в блоге: 34
16.05.2018, 16:55 8
Цитата Сообщение от nik_1712 Посмотреть сообщение
UTF-7
OMG, кого-то еще заботит UTF-7 ?
Это формат для модемов тридцатилетней давности, когда в байте было 7 бит.
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
16.05.2018, 17:57  [ТС] 9
Цитата Сообщение от Storm23 Посмотреть сообщение
OMG, кого-то еще заботит UTF-7 ?
Это формат для модемов тридцатилетней давности, когда в байте было 7 бит.
Состояние объекта, закодированного в UTF-8 или UTF-7, не сохраняется, если этот объект сериализуется и десериализуется с использованием различных версий .NET Framework.

https://docs.microsoft.com/ru-... ialization
0
483 / 396 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.05.2018, 18:01 10
Цитата Сообщение от nik_1712 Посмотреть сообщение
Состояние объекта, закодированного в UTF-8 или UTF-7, не сохраняется
Это написано про двоичную сериализацию (Binary). Не про JSON.
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
16.05.2018, 19:52  [ТС] 11
А что-то более универсальное и простое, чем сериализация кто нибудь может предложить?
Я например пробовал выводить в текстовый файл текст из массива с использованием табуляции текста. Но как потом этим текстом снова заполнить массив?!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    
public partial class MainForm : Form
    {
        string [] area1; 
        string [] area2;
        string [] area3;
        string [] area4;
        string [] area5;
        int tempareaint ;
        public MainForm()
        {
            InitializeComponent();
            area1 = new string[10]; // инициализация массива указанием нового размера (В C# массив начинается с элемента с № = 0)
            area2 = new string[10];
            area3 = new string[10];
            area4 = new string[10];
            area5 = new string[10];
        }
        
        void ButOpenFileClick(object sender, EventArgs e)
        {   
            OpenFileDialog dlg = new OpenFileDialog();
            // или Текст
            // или все файлы
            dlg.Filter = "Text|*.txt|All Files|*.*";
            dlg.ShowDialog();
            textBox1.Text ="";
            int counter = 0;
            string line;
            string fileSelect = dlg.FileName.ToString();
            // Прочитать файл ("путь\файл") и присвоить его содержимое (строку) строке "line"
            System.IO.StreamReader file = new System.IO.StreamReader(@fileSelect);
            while((line = file.ReadLine()) != null)
            {
                textBox1.Text = textBox1.Text + "\n" + line;
              // counter++;
            }
            file.Close();
        }
        void ButSaveinFileClick(object sender, EventArgs e)
        {
            
            Random rnd = new Random();//Создание объекта для генерации чисел
            this.saveFileDialog1.ShowDialog();
            string fileSelect = this.saveFileDialog1.FileName.ToString();
            System.IO.StreamWriter file = new System.IO.StreamWriter(@fileSelect);
 
        for (int i =0; i<=9;i++)
        {
            tempareaint = rnd.Next();//Получить очередное (в данном случае - первое) случайное число
            area1[i] = tempareaint.ToString();
            tempareaint = rnd.Next();
            area2[i] = tempareaint.ToString();
            tempareaint = rnd.Next();
            area3[i] = tempareaint.ToString();
            tempareaint = rnd.Next();
            area4[i] = tempareaint.ToString();
            tempareaint = rnd.Next();
            area5[i] = tempareaint.ToString();
            file.WriteLine(area1[i] + "\t" +area2[i] + "\t" +area3[i] + "\t" +area4[i] + "\t" +area5[i] + "\r");
        }
            file.Close();
        }
    }
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
16.05.2018, 20:05  [ТС] 12
Результат работы программки.
А обратно загрузить из этого файла в массив не знаю как.
0
Миниатюры
Каким образом лучше сохранять пользовательские настройки приложения и введённые данные на локальный диск?  
878 / 537 / 268
Регистрация: 26.11.2015
Сообщений: 1,698
Записей в блоге: 2
16.05.2018, 20:08 13
здесь все достаточно хорошо расписано.
0
483 / 396 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.05.2018, 23:25 14
Цитата Сообщение от nik_1712 Посмотреть сообщение
А что-то более универсальное и простое, чем сериализация кто нибудь может предложить?
погугли формат CSV. Несколько раз его использовал для экспорта данных в excel-совместимые файлы, когда не было желания заморачиваться с полноценной поддержкой офиса.
Формат элементарный.
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
17.05.2018, 11:39  [ТС] 15
Цитата Сообщение от Toros1992 Посмотреть сообщение
здесь все достаточно хорошо расписано.
Это Где ?!!! У меня SharpDevelop Version : 5.1.0.5134-RC
0
Миниатюры
Каким образом лучше сохранять пользовательские настройки приложения и введённые данные на локальный диск?  
906 / 791 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
17.05.2018, 11:46 16
Цитата Сообщение от nik_1712 Посмотреть сообщение
Это Где ?!!!
заголовок программы посмотри и всё встанет на свои места
0
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
17.05.2018, 11:48  [ТС] 17
У меня только вот что есть (может не там копаю). Кнопка страницы свойств всегда не активна. Может какой то надстройки не хватает в пакете установки? Или какую либо библиотеку подключить нужно?
0
Миниатюры
Каким образом лучше сохранять пользовательские настройки приложения и введённые данные на локальный диск?  
1 / 1 / 0
Регистрация: 31.01.2016
Сообщений: 43
17.05.2018, 12:00  [ТС] 18
Цитата Сообщение от aquaMakc Посмотреть сообщение
погугли формат CSV. Несколько раз его использовал для экспорта данных в excel-совместимые файлы, когда не было желания заморачиваться с полноценной поддержкой офиса.
Формат элементарный.
В том то и беда. Не могу найти никакой информации на тему "как прочитать такой файл и загрузить снова в таблицу (массив)".
Знаешь? То подскажи пожалуйста.
0
878 / 537 / 268
Регистрация: 26.11.2015
Сообщений: 1,698
Записей в блоге: 2
17.05.2018, 12:34 19
Лучший ответ Сообщение было отмечено nik_1712 как решение

Решение

C#
1
2
3
4
5
6
7
8
        using (StreamReader sr = new StreamReader("CSV_File.csv"))
        { 
            string line;
            while ((line = sr.ReadLine()) != null)//Считываешь построчно каждую строку из csv файла
            {
                string[] arguments = line.Split(';');//Получаешь массив элементов в строке, разделенных символом ;
            }
        }
1
162 / 101 / 30
Регистрация: 19.01.2013
Сообщений: 821
17.05.2018, 20:19 20
Чиво у вас?
Скачайте себе вижуал студио и не мучайтесь!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2018, 20:19

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Каким образом лучше загружать данные из текстового файла? Можно ли обойтись при этом только js, не используя php?
Всем привет, столкнулся с определенной проблемой, у меня есть текстовый файл, в котором находятся...

Сохранять введенные данные
Всем хай. Возникла проблемка. Я в программировании начинающий, можно сказать ноль. Написать...

Где лучше сохранить пользовательские настройки
Доброго времени суток. Подскажите как лучше сохранить пользовательские настройки? Например, если...

Каким образом сохранять в таблице для записи n количество записей других таблиц?
Здравствуйте, я в БД новый, каким образом сохранять в таблице для записи n количество записей...

Как сохранять введенные данные, например в массив, после выключения консоли
Здравствуйте. Как сохранить то, что введено в массив, после выключения консоли (программы)? ...

Каким образом можно добавить цифры,введенные пользователем в множество? (Программа почти написана, нужен совет)
Здравствуйте, форумчане! Я не прошу написать программу за меня,у меня она практически получилась у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.