Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
.NET 4.x

Редактор binary file

30.03.2019, 10:44. Показов 4546. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать обычный редактор .dat файла.
Сначала попробовал создать просто чтение через console получилось неплохо.
Но теперь надо ещё и редактировать.
Решил попробовать через datagridview но что то не получается.
Единственное что вышло сделать это название столбцов, дальше он лишь ругался на то что не может прочитать и ещё много всяких ошибок.
Может быть кто то сможет помочь?
Вот так я открываю файл и получаю по модели название и количество столбцов.
C#
1
2
3
4
5
6
7
8
9
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                textBoxFile.Text = openFileDialog.FileName;
            }
            BindingList<CountryModel> data = new BindingList<CountryModel>(); 
            dataGridView1.DataSource = data;
        }
Вот сама модель для столбцов.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    {
        public string Name { get; set; }
        public string Capital { get; set; }
        public int Area { get; set; }
        public double People { get; set; }
 
        public string Hidden = "";
 
        public EventManagerModel(int name, string capital, int area, double people)
        {
            this.Name = name;
            this.Capital = capital;
            this.Area = area;
            this.People = people;
        }
    }
Но вот как сделать чтобы он читал сам файл, у меня не вышло.
Файл создавался таким способом
Кликните здесь для просмотра всего текста

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
            Test[] tests = new Test[16];
            tests[0] = new Test("Germany", "Berlin", 357168, 80.8);
            tests[1] = new Test("France", "Paris", 640679, 64.7);
            tests[2] = new Test("Germany1", "Berlin1", 357168, 80.8);
            tests[3] = new Test("France1", "Paris1", 640679, 64.7);
            tests[4] = new Test("Germany2", "Berlin2", 357168, 80.8);
            tests[5] = new Test("France2", "Paris2", 640679, 64.7);
            tests[6] = new Test("Germany3", "Berlin3", 357168, 80.8);
            tests[7] = new Test("France3", "Paris3", 640679, 64.7);
            tests[8] = new Test("Germany4", "Berlin4", 357168, 80.8);
            tests[9] = new Test("France4", "Paris4", 640679, 64.7);
            tests[10] = new Test("Germany5", "Berlin5", 357168, 80.8);
            tests[11] = new Test("France5", "Paris5", 640679, 64.7);
            tests[12] = new Test("Germany6", "Berlin6", 357168, 80.8);
            tests[13] = new Test("France6", "Paris6", 640679, 64.7);
            tests[14] = new Test("Germany7", "Berlin7", 357168, 80.8);
            tests[15] = new Test("France7", "Paris7", 640679, 64.7);
            
            string path = @"C:\test.dat";
            try
            {
                using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
                {
                    foreach (Test s in tests)
                    {
                        writer.Write(s.name);
                        writer.Write(s.capital);
                        writer.Write(s.area);
                        writer.Write(s.people);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2019, 10:44
Ответы с готовыми решениями:

Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class
Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class...

Binary XML file line #20
Не понятная ошибка когда пробую запустить на андроиде версий 4.4 и 6.0(толька такие есть) в то время как на 8.0 все работает нормально ...

Modify binary file in place
Как модифицировать пару байт бинарного файла без необходимости перезаписывать\читать весь файл? Пока что пользуюсь #include...

30
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
31.03.2019, 14:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Irbos Посмотреть сообщение
Спасибо но он не сохраняет изменения
Напутал с проектами, короче вот этот исправный исходник. Одно "НО", запускать от имени администратора. Так как делал проект под админкой. и без админки ошибки посыпятся из под windows
BinWriteRead2.zip
1
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
31.03.2019, 14:25  [ТС]
Цитата Сообщение от bloomder Посмотреть сообщение
Напутал с проектами, короче вот этот исправный исходник. Одно "НО", запускать от имени администратора. Так как делал проект под админкой. и без админки ошибки посыпятся из под windows
BinWriteRead2.zip
Я например добавил новую строчку и закрыл, при открытие он открывает без той строчки что я добавил.
Может быть что то не так делаю?
Миниатюры
Редактор binary file  
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
31.03.2019, 15:31
Цитата Сообщение от Irbos Посмотреть сообщение
Я например добавил новую строчку и закрыл, при открытие он открывает без той строчки что я добавил.
Может быть что то не так делаю?
Мое приложение, создает новый файл, записывает 16 штук по 4 записи информации, что описано в шапке темы, а затем считывает бинарный файл и добавляет в dataGeidView. Советую Вам разобраться в основах, чтобы понимать что делать и разбираться в чужом коде
0
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
31.03.2019, 15:38  [ТС]
Цитата Сообщение от bloomder Посмотреть сообщение
Мое приложение, создает новый файл, записывает 16 штук по 4 записи информации, что описано в шапке темы, а затем считывает бинарный файл и добавляет в dataGeidView. Советую Вам разобраться в основах, чтобы понимать что делать и разбираться в чужом коде
Я как видимо не совсем правильно выразился, ошибку с чтением я исправил после вашего примера в первом посте.

Сейчас столкнулся с тем что когда я редактирую в datagridview или добавляю новую строчку он не сохраняет изменения.
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
31.03.2019, 15:44
Если хотите, чтобы мое приложение, только считывало, закомментируйте блок кода, где производиться создание, запись и закрытие файла.
Вот этот код закомментировать:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
            BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create));
            foreach (Test s in tests)
            {
                writer.Write(s.Name);
                writer.Write(s.Capital);
                writer.Write(s.Area);
                writer.Write(s.People);
            }
            writer.Close();

Комментить:
C#
1
2
3
4
/*
  Код скомментированный 
  int a=0;
*/
Добавлено через 4 минуты
Цитата Сообщение от Irbos Посмотреть сообщение
В 7 посту я уже спрашивал как редактировать в datagridview и потом сохранять.
А ты отвечаешь всё ещё на первый вопрос который я исправил.
Цикл создавать на количество строк dataGridView, и внутри цикла записывать в 4 переменные информацию, следом 4 эти переменные записывать.
0
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
04.04.2019, 22:02  [ТС]
Цитата Сообщение от bloomder Посмотреть сообщение
Цикл создавать на количество строк dataGridView, и внутри цикла записывать в 4 переменные информацию, следом 4 эти переменные записывать.
не получается
можно ли реализовать чтобы он читал из datagrid и записывал по тому методу как читает?
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
04.04.2019, 22:27
Лучший ответ Сообщение было отмечено Irbos как решение

Решение

Цитата Сообщение от Irbos Посмотреть сообщение
можно ли реализовать чтобы он читал из datagrid и записывал по тому методу как читает?
Можно, вот тема, где расписано как считать данные из datadridview, а записывать как, Вам уже показали

Добавлено через 1 минуту
C#
1
dataGridView1[j, i] // j-столбец, i - строка
1
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
04.04.2019, 23:46  [ТС]
Цитата Сообщение от bloomder Посмотреть сообщение
Можно, вот тема, где расписано как считать данные из datadridview, а записывать как, Вам уже показали
C#
1
dataGridView1[j, i] // j-столбец, i - строка
да спасибо всё получилось, только он сохраняет то что и открыл
то есть он изменения не сохраняет
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
04.04.2019, 23:51
Цитата Сообщение от Irbos Посмотреть сообщение
да спасибо всё получилось, только он сохраняет то что и открыл
то есть он изменения не сохраняет
в dataGridView храниться считанная информация, он с файлом не связан, чтобы сохранить отредактированную информацию на datagridview в файл, нужно считать всю информацию с datagridview и записать в файл и закрыть файл
0
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 218
04.04.2019, 23:53  [ТС]
Цитата Сообщение от bloomder Посмотреть сообщение
в dataGridView храниться считанная информация, он с файлом не связан, чтобы сохранить отредактированную информацию на datagridview в файл, нужно считать всю информацию с datagridview и записать в файл и закрыть файл
Тогда где я ошибаюсь?

PS(перешел на wpf для дизайна)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void Save(string outputPath)
        {
            BinaryWriter writer = new BinaryWriter(File.Open(outputPath, FileMode.Create));
            for (int i = 0; i < TestGrid.Items.Count; i++)
            {
                writer.Write(NameLength);
                writer.Write(Name);
                writer.Write(CapitalLength);
                writer.Write(Capital);
                writer.Write(Area);
                writer.Write(Population);
            }
            writer.Close();
        }
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 665
05.04.2019, 00:32
Цитата Сообщение от Irbos Посмотреть сообщение
Тогда где я ошибаюсь?
Не могу сказать, но советую под отладкой каждую строчку отследить, тогда скорее всего поймете где ошибаетесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2019, 00:32

Read and write binary file
Ребята, срочно нужна помощь. Записываю класс Message с сообщениями в файл. struct Head { public: int who; int to; ...

EOF и char (-1) binary file
есть бинарный файл в котором есть байты, в том числе (-1)dec как я могу понять, что цикл достиг EOF , а не рядового значения (-1) ? как...

Stream Binary File (чтение Файла)
Добрый день. Задача следующая: есть файл, в нем 7 байт. Надо с помощью ssjs разобрать эти байты и преобразовать каждый из них в...

Как в ASP прочитать Binary File (не текстовый) ?
Как в ASP прочитать Binary File (не текстовый) !!! FileSystemObject позволяет читать только ТЕКСТОВЫЕ файлы. Чем можно читать ????...

Binary XML file line #XXX: Error inflating class
Хочу сделать компонент, для возможности использования его несколько раз... При компиляции получаю ошибку: Binary XML file line #XXX:...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru