Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34

Доработать код архиватора

25.04.2015, 17:11. Показов 1249. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть такой код для кнопки "извлечь архив"

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
private void Button_ExtractArchive2_Click(object sender, EventArgs e)
        {
 
 
            DialogResult a = this.openFileDialog.ShowDialog();
            ///this.openFileDialog.ShowDialog( .OpenFile();
 
            if (a == DialogResult.OK)
            {
                string filename = openFileDialog.FileName;
                //string path = folderBrowserDialog.SelectedPath;
                // filename = path + "note.txt";
 
                // запись в файл
                //using (FileStream fstream = new FileStream(@"I:\SomeDir\noname\note.txt", FileMode.OpenOrCreate))
                FileInfo f = new FileInfo(@"C:\test.bin");
                using (FileStream fs = f.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
                {
                    
                    
                    // преобразуем строку в байты
 
 
 
                    // считываем данные
 
                    using (BinaryReader breader = new BinaryReader (fs))
                    {
 
                        char DOF = 'ĩ';
 
               
                            for (int n = 0; n <= 10; n++)
                            {
 
                                // считываем очередной символ из открытого для чтения файла - [B]ВЫЯСНИТЬ КАК[/B]
 
 
 
                                int digit = -1; // переменная для хранения цифры, если ее удастся считать
 
                                // пытаемся перевести символ в число с помощью функции TryParse -[B] ВЫЯСНИТЬ КАК[/B]
 
                                Int64.TryParse(count, out n);
 
 
                                if (digit >= 0 && digit <= 9)   // если получили цифру
                                {
 
                                    // добавляем символ в массив цифр - [B] ВЫЯСНИТЬ КАК[/B]
 
                                }
 
                                else
                                {
 
                                    // иначе обрабатываем спецсимволы и выходим из цикла
 
                                    break;
 
                                }
 
                            }
 
 
 
                            Int64 count = 0; // ТОЛЬКО ДЛЯ СЧИТЫВАНИЯ ЧИСЛА БАЙТ!!!
 
                            // далее, если массив цифр непустой, получаем число из цифр - ВЫЯСНИТЬ КАК
 
                            count += Math.Pow(10, the_degree) * the_digit;
 
 
 
                            // здесь the_degree - степень числа 10, вычисляемая в цикле
 
                            //                the_digit - ранее записанная в массив цифра по индексу этого цикла
 
 
                            count += 1 * 4; //4
                            count += 10 * 1; //14 при этих значениях мы бы получили число символов 14
 
                            count += 100 * 5;
                            count += 1000 * 4;
                            count += 10000 * 3;
                            count += 100000 * 2;
                            count += 1000000 * 1;
                            count += 10000000 * 1;
                            count += 100000000 * 1;
                            count += 1000000000 * 1; // а при этих значениях мы бы получили число символов 11112345
 
                        
 
                        /*
                        byte[] array = new byte[breader.Read];
 
                        breader.Read(array, 0, array.Length);
                        if (array == null)
                        {
                            MessageBox.Show("array пустой!");
                            return;
 
                            // декодируем байты в строку
                            string textFromFile = System.Text.Encoding.Default.GetString(array);
                            textBox_String.Text = textFromFile;
 
                        }
                        else
                        {
 
                        }
                        */
                        MessageBox.Show("нет");
                    }
 
  Console.ReadLine();
 
                    
                             
                }
 
 
 
            }
 
         }
 
        }
Проблема в пунктах, которые показаны в комментариях в коде "ВЫЯСНИТЬ КАК" и также в моменте
C#
1
// иначе обрабатываем спецсимволы и выходим из цикла
Это чтение из файла бинарника test.dat. Что тут и как надо дописать и что исправить...

Где идёт считывание с count Должно быть в цикле одной строкой. Как записать одной строкой, я не понимаю...



Считывание должно идти из файла C:/test.bin. Сам это файл в бинарнике:



3 символа unicode : 2 символа начала файла -730a; конец файла - 0896 (которые не дают нормально открыть бинарник текстовым блокнотом).

Сами значения, которые были записаны в банарник - abcdefghigklmn.

Запись в бинарник это предедущая кнопка "добавить в архив". Код тут:

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
 private void Button_AddArchive2_Click(object sender, EventArgs e)
        {
 
 
            // Console.WriteLine("Введите строку для записи в файл:");
            string binar = this.textBox_String2.Text; //Console.ReadLine();
            if (binar == null)
            {
                MessageBox.Show("text не считан");
                return;
            }
 
            DialogResult a = this.openFileDialog.ShowDialog();
            ///this.openFileDialog.ShowDialog( .OpenFile();
 
            if (a == DialogResult.OK)//// 0? уточнить в "MSDN openFileDialog" в Гугл
            {
                string filename = openFileDialog.FileName;
                //string path = folderBrowserDialog.SelectedPath;
 
                // filename = path + "note.txt";
 
                // запись в файл
                FileInfo f = new FileInfo(@"C:\test.bin");
                using (FileStream fs = f.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
                {
 
                    //using (FileStream fstream = new FileStream(@"I:\SomeDir\noname\note.txt", FileMode.OpenOrCreate))
                    
                    using (BinaryWriter bwriter = new BinaryWriter(fs))
                    {
                        // преобразуем строку в байты
 
                        char TOF = 'ੳ';
                        char EOF = '࢖'; // 0-й символ ascii-кода
 
                        byte[] array = System.Text.Encoding.Unicode.GetBytes(TOF.ToString()
                            + binar.Count().ToString() + TOF.ToString() +  binar + EOF.ToString());
                        
                        // запись массива байтов в файл
                        bwriter.Write(array, 0, array.Length);
                        MessageBox.Show("Текст записан в файл");
                    }
                }
            }
            //a = 0;
 
        }
Тут же и объявления этих двух спец символов начала и конца файла

C#
1
2
  char TOF = 'а©і';
  char EOF = 'аў–';
Надеюсь найдутся добрые люди, которые смогут помочь с этой проблемой. Это самая сложная часть в написании программы. (дипломная работа).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2015, 17:11
Ответы с готовыми решениями:

доработать код
def подсчетСловПредложения(предложение): #! Функция подсчета количества слов в предложении разделенноеПредложение =...

Доработать код
Задание:Вывести на экран 1 или 0 в зависимости от того, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа. Нужно...

Доработать код
Добрый день! Пожалуйста, помогите доработать код :) ymaps.ready(init); function init() { var geolocation = ymaps.geolocation; ...

14
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 12:07  [ТС]
И да, после первого 730a идет count (с кода выше) подсчета количества символов в бинарнике. Т.е. 14 (a b c d e f g h i g k l m n )

Добавлено через 18 часов 49 минут
Мне мне нибудь может помочь или нет? Слишком много прошу?... эх
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 12:35
Цитата Сообщение от Fluttershy-2013 Посмотреть сообщение
Мне мне нибудь может помочь или нет?
А что именно надо-то? Я так и не понял из вашего рассказа суть задачи...
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 13:13  [ТС]
insite2012, Задача такова:
1. Я делаю программу-архив, в которую можно будет добавлять/извлекать файлы различного формата (картинки, видео, музыка ит.п.
2. В данный момент мне нужно, что эти байты с бинарника можно было считывать.

Точнее, чтобы максимальное число байт, которое можно будет засунуть в мою программу-архив был до 1 миллиарда (1000000000). (где-то 1 гб или больше). С Начала в бинарнике идет символ начала файла - TOF - прибавляется у нему свойство count (подсчет всех байт от a до n. Т.е. 14 байт) - к нему прибавляется еще один символ начала файла TOF - записывается сами числа в бинарник - прибавляется последний символ конца файла EOF (все это в коде кнопки "добавить архив)".

Т.е. все это нужно для того, чтобы последовательно в итоге записывались все байты из файлов, которые будем мы добавлять в архив. Могу конкретно скинуть исходник программы, если не понятно опять, что я объяснил.

Добавлено через 10 минут
insite2012, Особенно мне надо понять с пунктами, где в конце ВЫЯСНИТЬ КАК что и как там прописать...
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 14:27
Цитата Сообщение от Fluttershy-2013 Посмотреть сообщение
Я делаю программу-архив, в которую можно будет добавлять/извлекать файлы различного формата (картинки, видео, музыка ит.п.
Вот теперь понятно.
Один вопрос: использование именно файла это обязательно? Я бы использовал для такой цели БД.
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 15:27  [ТС]
insite2012, Да. я делаю программу для ВКР. Тема "Архивирование данных в бинарном формате". Должна в итоге получиться программа archiving.exe.

Добавлено через 50 минут
insite2012, Так вы поможете или как?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 15:49
Цитата Сообщение от Fluttershy-2013 Посмотреть сообщение
Так вы поможете или как?
Использование бинарной сериализации, как я понимаю, тоже не разрешено?
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 15:54  [ТС]
insite2012, Мне и нужно считывать же байты. Из файла в бинарник и обратный процесс этому до выше сказанного ограничения чуть больше 1 гб (миллиард байт). Если это не оно, то не понимаю что значит "сериализация". Мне в последовательность байтов и нужно.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 16:03
Цитата Сообщение от Fluttershy-2013 Посмотреть сообщение
не понимаю что значит "сериализация"
Это значит, что можно будет использовать некоторые готовые классы.
https://msdn.microsoft.com/ru-... .110).aspx
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 16:04  [ТС]
insite2012, Понятно. Нет, про этот метод мне не говорили использовать.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 16:07
Цитата Сообщение от Fluttershy-2013 Посмотреть сообщение
про этот метод мне не говорили использовать.
Ну так его функционал МОЖНО использовать или НЕЛЬЗЯ?
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
26.04.2015, 16:12  [ТС]
insite2012, Может и можно. Я же говорю, я не особо еще разбираюсь в программировании, а про это мне ничего не говорили.
Могу точно уточнить у преподователя.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.04.2015, 18:24
Fluttershy-2013, вот вам пример с использованием сериализации.
Вложения
Тип файла: rar Archiver_Demo.rar (49.1 Кб, 10 просмотров)
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
27.04.2015, 20:56  [ТС]
insite2012, Я уточнил. Это не подойдет ни как.

"Готовые запаковывающие и распаковывающие классы не подойдут."

Добавлено через 21 час 27 минут
Конкретно в пунктах кода "выяснить как" что и как прописывать. Ничего же такого сверхсложного не прошу.

Добавлено через 2 часа 24 минуты
люди?

Добавлено через 1 час 13 минут
0
1 / 1 / 0
Регистрация: 06.04.2015
Сообщений: 34
30.04.2015, 22:33  [ТС]
думаю, что только за деньги помогут. бесплатно тут ничего не добъешься...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2015, 22:33
Помогаю со студенческими работами здесь

Доработать код
Нашел код на Вашем форуме, для функции f(x)= tg(x), как его переделать под функцию f(x)=tg2x-3 Не могу понять где задается формула. ...

Доработать код
Помогите пожалуйста доработать код. Есть код экспорта jtable в excel. Экспорт проходит хорошо, когда у таблицы одно строчный заголовок, а...

Доработать код
Доброе время Всем! Прошу помощи, т.к сам не справляюсь, да и честно сказать не умею. Вообщем кусок кода: strComputer =...

Доработать код
function solveTask3(data) { $('#output').html(&quot;&quot;); /* проверяем исходные данные, в первой задаче это должны быть просто числа,...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru