|
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
|
||||||
Чтение структуры из бинарного файла03.11.2015, 11:07. Показов 7847. Ответов 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 | |
|
Чтение бинарного файла по заголовкам Некорректное чтение из бинарного файла Чтение матрицы из бинарного файла Чтение из бинарного файла в структуру Чтение бинарного файла задом - наперед Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|