|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
Чтение структуры из бинарного файла03.11.2015, 11:07. Показов 7858. Ответов 48
Метки нет (Все метки)
Всем добрый день, столкнулся с проблемой чтения структур из бинарного файла, много чего нового узнал и много в чем еще не разобрался, ниже приведу пример кода (пример брал с форумаЗапись структуры в бинарный файл) но у меня компилятор ругается на
Кликните здесь для просмотра всего текста
"System.IO.BinaryReader" не содержит определения для "ReadStruct" и не был найден метод расширения "ReadStruct", принимающий тип "System.IO.BinaryReader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
Тема раньше создавалась на С++\СLI но по совету решил писать данный проект на C# в теме указаны все выходные данные которые должны получить Чтение данных из бинарного файла Всем заранее спасибо
0
|
||||||
| 03.11.2015, 11:07 | |
|
Ответы с готовыми решениями:
48
|
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
| 05.11.2015, 10:56 [ТС] | ||||||
Добавлено через 21 минуту Заметил утечку памяти ArcNew.vshost.exe*32 висит в памяти завершить дерево процессов нельзя так как процесс запускается снова, либо не закрывается, папку Debug удалить невозможно, ссылаясь на запущенное данное приложение и тестовый бинарный файл file.bin ![]() Добавлено через 3 минуты Разобрался что это за файл и для чего он нужен
0
|
||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
||||||
| 05.11.2015, 11:31 | ||||||
|
А скажите мне пожалуйста, зачем вы читаете в цикле, если у вас в первом посте была всего одна запись:
1
|
||||||
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
| 05.11.2015, 11:52 [ТС] | ||||||
|
Konctantin, в первом посте как говорится я его слепила из того что было... прогуглив и наткнувшись на вашу тему, я от незнания скопипастил подставил свои значения и хотел разобраться как это все дело работает,
по поводу ошибки, нашел следующий момент если закоментировать в структуре
t_n и t_k которые очень мне нужны, решил пойти другим путем и объявил их как переменные int но сохранены они были в билдере как дата\время и получаем мусор, также получаем мусор по всему файлу P = непонятным набором цифр, Рр и т.д очень много значений которые просто теряютсяДобавлено через 2 минуты Даже если просто закоментировать t_n и t_k также получаю мусор
0
|
||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
||
| 05.11.2015, 11:54 | ||
|
Структура DateTime имеет размер 8 байт, а int 4 байта, из-за этого и мусор.
прочитайте вот тут https://msdn.microsoft.com/ru-... .110).aspx и вот тут http://habrahabr.ru/post/114953/
1
|
||
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
| 05.11.2015, 11:54 [ТС] | ||||||
|
и еще интересный момент, если вернуть
0
|
||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 05.11.2015, 12:05 | |
|
так, от куда вы берете этот файл? на него есть спецификация? или как вы узнали его структуру?
0
|
|
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
|
| 05.11.2015, 12:24 [ТС] | |
|
Этот файл формирует программа разработанная в далеких 2000-х годах кем-то, и все года туда каждый что-то добавлял, эта программа хранит в себе технологический процесс производства, вы спросите зачем так усложнять ведь были БД и т.д, так вот к такому методу пришли только по тому что на то время не было сетей на участке,не было ПК на котором можно было разместить БД, был лишь 1 пк который формирует данные, и за стенкой 2-й пк который читает эти данные с бинарных файлов,
шли годы и сейчас идет большой передел, но отказаться полностью от старой системы учета и контроля одним махом невозможно, вы спросите а для чего переписывать что-то если это скоро отправится в архив? Ну главным ответом на этот вопрос и пожалуй основным это желание и стремление научится разрабатывать приложения на .NET (C#, C++\CLI, и т.д), вторым это требование начальства, ну и третьим есть идея как собирать данные складывать их правильно в БД, и в случае отказа сети формировать временно данные в файл который после возобновления сети будет отправляться прямиком в БД. По поводу спецификации, нету ничего, в коде нету элементарных комментариев,а переменные выглядят как набор букв т.д., просто анализируя код и параметры я имею представление что там должно хранится и отображаться. Язык на котором написаны эти два приложения C++ Builder(5-6).
0
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 05.11.2015, 14:26 | |
|
Скорее всего вы не правильно составили структуру. Или что-то не так поняли в старом коде.
0
|
|
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||||||||||||
| 05.11.2015, 14:42 [ТС] | ||||||||||||||||
|
Вот структура на С++
могу только предполагать что не правильное смещение
0
|
||||||||||||||||
|
Администратор
|
|
| 05.11.2015, 15:01 | |
|
Видимо билдеровский
TDateTime имеет другой, отличный от нетовского DateTime размер (или представление). Вполне вероятно, что там не мусор, а, например, ticks from epoch и их просто нужно конвертировать.Попробуйте так: поставьте там int, приведите сюда то значение, которое вы считаете мусором и приведите дату, которая там должна получиться. Попробуем перевести.
1
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
||||||
| 05.11.2015, 15:09 | ||||||
Сообщение было отмечено Dostik как решение
Решение
Вот правильная структура:
1) Выравнивать структуру не надо было. 2) Вы указали лишнее поле. 3) Вы указали неверный размер массива.
1
|
||||||
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||||||||||||
| 05.11.2015, 16:31 [ТС] | ||||||||||||||||
|
Огромное спасибо вам Konctantin, все работает как положено, спасибо за подробное объяснение, и за потраченное время
![]() ![]() Добавлено через 1 минуту tezaurismosis, Аналогично спасибо вам Алексей большое, за помощь, советы, и личное время ![]() ![]() Добавлено через 1 час 2 минуты Konctantin, Извините пожалуйста еще хочу задать вопрос по теме, если структура заполнялась в массиве ? как её заполнять в C# пример на Builder
0
|
||||||||||||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 05.11.2015, 16:53 | |
|
Также, либо можете записывать все в List<str_pereval>, отображать также, либо можно забиндить данные.
Но это уже другая тема.
1
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 05.11.2015, 17:31 | |
Сообщение было отмечено Dostik как решение
Решение
Вот вам простейший пример того как это можно сделать
1
|
|
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
|||||||||||
| 05.11.2015, 19:24 [ТС] | |||||||||||
|
Konctantin, Большое спасибо за пример, но почему то я не могу его скомпилировать получаю 8 ошибок
=> frez является поле а используется как тип.
= недопустимая лексема в объявлении класса, структуры или интерфейса.Почему так ?
0
|
|||||||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|||||||||||||||||||||
| 05.11.2015, 21:05 | |||||||||||||||||||||
|
C# 6.0 (Visual Studio 2015)
1
|
|||||||||||||||||||||
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
| 05.11.2015, 23:14 [ТС] | ||||||
|
Одна ошибка исправлена, спасибо, две нет :
0
|
||||||
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 06.11.2015, 07:13 | |
|
{ get { frez return frez; } } очепятался я, { get { return frez; } }
1
|
|
|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
| 06.11.2015, 07:56 [ТС] | ||||||
|
Konctantin, Доброе утро, спасибо за ответ, компилятор не ругается, теперь ругается отладчик ...
Кликните здесь для просмотра всего текста
Необработанное исключение типа "System.Windows.Markup.XamlParseExceptio n" в PresentationFramework.dll
Дополнительные сведения: 'The invocation of the constructor on type 'WpfApplication1.MainWindow' that matches the specified binding constraints threw an exception.' Line number '6' and line position '9'.
0
|
||||||
|
Администратор
|
||
| 06.11.2015, 08:17 | ||
|
Перенесите вызов CommandBinding_Open_Executed(null, null); в обработчик события, например, Initialized (или Loaded). Тогда можно будет увидеть исключение как оно есть.
1
|
||
| 06.11.2015, 08:17 | |
|
Чтение бинарного файла по заголовкам Некорректное чтение из бинарного файла Чтение матрицы из бинарного файла Чтение из бинарного файла в структуру Чтение бинарного файла задом - наперед Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|