Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
1

Простой способ записи данных

07.05.2016, 17:52. Просмотров 1016. Ответов 7
Метки нет (Все метки)

Добрый день.

Ребят тут я задумался немного о том как лучше всего хранить историю записей.

INI
DATABASE

или еще какие варианты есть.

Я стремлюсь к тому чтобы был всего один EXE файл.


Вот какой способ посоветуете для записи данных.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2016, 17:52
Ответы с готовыми решениями:

Подскажите простой способ собрать OpenVPN
Добрый ден. подскажите более менее простой способ поднять openvpn приложением вида log pass IP.

Простой способ удаленного вызова метода
Ребят можете привети пример кода для вызова метода в классе C# удаленно ? То есть есть программа...

Простой способ получения строки/столбца двумерного массива
Подскажите, простой способ получения строки/столбца двумерного массива, если он конечно существует)...

Есть ли более простой и оптимальный способ решения данной задачи?
Добрый день! Ситуация следующая: Есть класс Event. public class Event { public string...

7
Эксперт .NET
4330 / 1991 / 387
Регистрация: 27.03.2010
Сообщений: 5,447
Записей в блоге: 1
07.05.2016, 18:01 2
Shamsik, ответь для начала на следующие вопросы:

Цитата Сообщение от Shamsik Посмотреть сообщение
я задумался немного о том как лучше всего хранить историю записей.
Что подразумевается по историей записей?

Цитата Сообщение от Shamsik Посмотреть сообщение
Я стремлюсь к тому чтобы был всего один EXE файл.
Почему ты к этому стремишься? Тут без вариантов или всё-таки может быть не один exe файл?

Цитата Сообщение от Shamsik Посмотреть сообщение
Вот какой способ посоветуете для записи данных.
Для начала надо понимать, что ты собираешься писать. Если это какой-то флаг и пара цифр, то тут что угодно можно заюзать, а если это хранение какой-то сложной структуры данных, то тут явно надо думать отталкиваясб от других ограничений и пожеланий.

Добавлено через 35 секунд
Сразу скажу, что идея с только одним эксешником бредовая. Поясню: если писать что-то сложное, то много гемора с пиханием всего в эксешник. И то если есть исходники. Возможно, есть какие-то другие варианты, даже что-то помнится, что есть какие-то упаковщики, но лично я смысла в них не вижу вообще никакого.

Добавлено через 3 минуты
Shamsik, я бы вообще заюзал какую-нибудь БД типа SQLite или Sql CE.
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
07.05.2016, 18:03  [ТС] 3
Сейчас объясню, программа сама по себе простая.

К примеру пользователь зашел в программу создал новый файл записал что та, сохранил и вышел.
Чтобы потом можно было найти сохраненный файл в Истории файлов приложения и открыть его.

Для таких действия я думаю не подойдет способ INI или другие.


Ну я знаю что бредовая идея, ну ладно тогда пусть не будет один файл.
0
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 4
07.05.2016, 18:19 4
INI, имхо, как вариант для хранения записей не подходит в принципе, так как его структура подразумевает строение ключ-значение. Попробуй JSON, XML, с базами данных при отдельном экзешнике тот ещё геморрой, откровенно говоря, для особо извращённых профессионалов можно вообще в реестр сохранять, но это так, троллинг. В конце концов, всегда можно написать свой формат, это относительно несложно.

Добавлено через 12 минут
Если история файлов не превышает десяток-другой файлов и реально нужно, чтобы не было никаких лишних конфигурационных файлов в папке с прогой, тогда реестр тебе поможет, также может прокатить использование папки AppData/local - но и тот, и другой вариант загадят комп юзера, оставляя после себя немножко лишней инфы, требующей отдельного внимания при удалении проги.
0
Эксперт .NET
4330 / 1991 / 387
Регистрация: 27.03.2010
Сообщений: 5,447
Записей в блоге: 1
07.05.2016, 18:23 5
Цитата Сообщение от Bedivierre Посмотреть сообщение
требующей отдельного внимания при удалении проги.
Настроить нормально инсталлятор и никаких проблем.

Добавлено через 1 минуту
Сохранять туда данные как раз-таки самый нормальный вариант. Ибо в Program Files писать прога не может без прав администратора, а именно туда ставят юзеры инсталлятором обычно. Разве что можно сделать Portable версию, которая пишет в папку с эксешником.
0
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 4
07.05.2016, 18:26 6
Я так понял, что тут как раз изначально подразумевается своего рода Portable версия
0
Эксперт .NET
4330 / 1991 / 387
Регистрация: 27.03.2010
Сообщений: 5,447
Записей в блоге: 1
07.05.2016, 18:48 7
Лучший ответ Сообщение было отмечено Shamsik как решение

Решение

Короче, можно сделать как-то так. Сразу говорю, путь к файлу обёрнут в класс, мало ли ТС захочет сохранять ещё какие-то данные, то тут понятно, что просто в класс добавляем эти данные. Просто пример, в общем.

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Diagnostics;
using System.IO;
using RecentFilesExample.Data;
using RecentFilesExample.Model;
 
namespace RecentFilesExample
{
    internal class Program
    {
        private void Run(string[] args)
        {
            string dataFolder = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RecentFilesExample");
 
            FileDescription[] descriptions =
            {
                new FileDescription {FilePath = Path.Combine(dataFolder, "File1.txt")},
                new FileDescription {FilePath = Path.Combine(dataFolder, "File2.txt")},
                new FileDescription {FilePath = Path.Combine(dataFolder, "File3.txt")}
            };
 
            try
            {
                if (!Directory.Exists(dataFolder))
                {
                    Directory.CreateDirectory(dataFolder);
                }
 
                string recentFilesFileName = Path.Combine(dataFolder, "recentFiles.xml");
 
                DataSerializer.SaveObject(descriptions, recentFilesFileName);
                Console.WriteLine("Данные сохранены.");
                Process.Start(dataFolder);
 
                FileDescription[] fromFile = DataSerializer.LoadObject<FileDescription[]>(recentFilesFileName);
                Console.WriteLine("Данные прочитаны из файла.");
 
                Write(fromFile);
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
 
            Console.WriteLine("Нажмите любую клавишу, чтобы завершить работу...");
            Console.ReadKey();
 
            try
            {
                if (Directory.Exists(dataFolder))
                {
                    Directory.Delete(dataFolder, true);
                }
            }
            catch (Exception ex)
            {
                HandleException(ex, "Не удалось удалить папку: " + dataFolder);
                Console.ReadKey();
            }
        }
 
        private void HandleException(Exception ex, string message = null)
        {
            if (message != null)
            {
                Console.WriteLine(message);
            }
            Console.WriteLine(ex.Message);
        }
 
        private void Write(FileDescription[] descriptions)
        {
            Console.WriteLine("Recent files:");
            foreach (FileDescription description in descriptions)
            {
                Console.WriteLine(description.FilePath);
            }
        }
 
        #region Entry point
 
        private static Program _program;
 
        private static void Main(string[] args)
        {
            _program = new Program();
            _program.Run(args);
        }
 
        #endregion
    }
}
1
Вложения
Тип файла: rar RecentFilesExample.rar (9.7 Кб, 3 просмотров)
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
07.05.2016, 19:09  [ТС] 8
Casper-SC,

Спасибо тебе, и еще такой небольшой вопрос.


Стоит ли сохранять Логин и пароль для соединения с сервером в реестре.


Просто первый раз я его сохранял в INI файле, сегодня я передумал с просто записал в реестр

C#
1
private RegistryKey baseRegistryKey = Registry.CurrentUser;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2016, 19:09

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

Есть ли простой способ сделать структуру шаблонной и не потерять работоспособность перегрузок?
Всем привет. Скажите, пожалуйста, есть ли в C# простой способ сделать структуру шаблонной и не...

Способ записи
Здраствуйте! В чём плюсы и минусы такого такого способа записи double x = 1; ...

Посоветуйте простой способ указывать пользователя в программе
Добрый день! Есть exe-шник программы. Я хочу сделать так, чтобы имя пользователя отображалось в...

Подскажите простой способ записи звука со звуковой карты
Подскажите как просто записать звук с звуковой карты в Ubuntu (14.04 оболочка Unity) 1....


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

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

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