|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|||||||||||
Сохранение файла в формате .par31.07.2014, 12:55. Показов 5635. Ответов 49
Метки нет (Все метки)
Здравствуйте!! Помогите, пожалуйста, буду очень благодарен
Фактически сделал программу, (открывает .csv файл, разбирает его по столбцам в (CheckedListBox) и строкам в RadioButton(с диапазоном)) и после нажатия на кнопку, должно сохраняться в файл .par при этом иметь размер файла не более 1гб( если больше то сохранять в 2 файла) имя файла должно быть таким же как имя начального файла, при этом формат файла .par должен иметь следующий вид (там где (-) значит без разницы какое значение)
0
|
|||||||||||
| 31.07.2014, 12:55 | |
|
Ответы с готовыми решениями:
49
Сохранение текстового файла с формате DOS\Windows Сохранение файла в формате txt Сохранение файла в текстовом формате |
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||
| 20.08.2014, 00:39 | |||
|
Непонятно почему ты работаешь со строковым массивом, ведь мы уже создали таблицу из файла. Есть метод, который из всей таблицы может сделать таблицу, содержащую выбранные строки и столбцы. Ну ладно.
Куда эти строки писать? После чего? Сначала пишем структуру заголовка PARS_OF_WRITE_FILE. Затем ты написал: Но тогда как эти строки вписываются в
0
|
|||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
||||||
| 20.08.2014, 06:38 [ТС] | ||||||
|
ViterAlex, Доброе утро, мы стали немного не то делать, я ошибся
![]() Строки нужно будет записывать в бинарном виде во второй файл ".dat", пока что отложим это. В файл ".par" должна записываться эта структура, так... В итоге, у нас должен получиться практически похожий файл на файл, который я сейчас приложил, открывал его в totalcommandor'e через HEX, в итоге я вообще без понятия пока что как делать. Предложили сделать так:
int Segments; даже не рассматриваю пока что, рано
0
|
||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||
| 20.08.2014, 10:28 | |||||||||||
|
Значит, так. Я прикладываю готовый свой проект. Попробуй.
То, что предложили, имеет право на жизнь, но мой вариант проще в записи, хотя, может быть, сложнее в понимании. В своём варианте я изначально определяю, сколько байт будет занимать каждое поле структуры при записи (см. сообщение ранее). Остаётся задать каждому полю значение, преобразовать всю структуру в байтовый массив и записать этот байтовый массив в файл. Всё это делает приложенный проект. Запись выполняется так:
Конструктор имеет вид (файл Structures.cs):
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
||
| 20.08.2014, 15:04 [ТС] | ||
|
ViterAlex,
Такие символы "p?" в файле как то связаны с 32 каналами, т.к. их так же 32 символа,
0
|
||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|||||||
| 20.08.2014, 15:10 [ТС] | |||||||
0
|
|||||||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|
| 20.08.2014, 15:54 [ТС] | |
|
ViterAlex, Вот скрины, может помогут, открыл файлы .par и .dat в программке, нам нужно получать точно такое же.
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||||||||||||
| 20.08.2014, 23:06 | |||||||||||||||||||||
|
Приложенный par-файл содержит гораздо больше информации. Информация в заголовке приложенного файла такая:
Я прочитал этот заголовок в описанную мною структуру, потом записал в другой файл и получил одинаковое содержимое до смещения 0x110. Дальше в оригинальном par-файле информации ещё на 33 кб. Что там должно быть? Код для чтения данных из оригинального par-файла
Структура
Чтение байтового массива в структуру
Таким образом, я делаю вывод, что предложенный мною код записи в файл работает правильно. Осталось выяснить, что находится в файле дальше, после этого заголовка
1
|
|||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|||||||||||||||
| 21.08.2014, 09:54 [ТС] | |||||||||||||||
|
ViterAlex,
Добавлено через 2 часа 41 минуту ViterAlex, принципиально не записал вот эти значения
а дальше в .par файле идут строки с символами "..р?...." по 8 байт, 32 значения , т.е. это либо параметр AdcOffset , либо AdcScale , после этого записывается CalibrScale или CalibrOffset посчитал 1024 , так же по 8байт, как раз, получается наверное , а после этого идут какие то символы, пока не разобрался
0
|
|||||||||||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||
| 22.08.2014, 02:07 | |||||||
|
Но это легко исправляется в объявлении структуры и ни строчки кода для работы с этой структурой менять не нужно. Кликните здесь для просмотра всего текста
Чтение структуры из файла и запись в другой файл показывает, что файлы идентичны до 0x42ee, потом в оригинальном файле идёт ещё информация. Какая? Прилагаю скриншоты сравнения файлов. На первом скриншоте видно, что начала файлов совпадают (да и не только начала), также имеется сообщение о несовпадении данных. На втором скриншоте показано, где именно начинаются расхождения. Дальше в оригинальном файле идёт какая-то информация с именами каналов, начиная с 0x51e0 Также прикладываю весь проект. Кстати, вопрос: на какой фреймворк делаем программу? Если она будет запускаться на разных машинах, то есть смысл обдумать минимальную версию фреймворка
1
|
|||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
||
| 22.08.2014, 02:43 | ||
|
Я так понял у нас возникла путаница в терминах. Под заголовком я подразумевал часть par-файла, описываемую структурой. Поскольку так ты говорил изначально:
1
|
||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
||||||||
| 22.08.2014, 07:46 [ТС] | ||||||||
|
ViterAlex, как убрать вот эту строчку
Сейчас попробовал открытие нашего .par файла и оригинального .dat файла, работает! Так, закончим пока что с .par файлом, следующая информация в нём это по блокам и по одной программе данные, они нам не нужны (по крайней мере сейчас) Сейчас нужно записать .dat файл, и надеюсь будет все работать вместе Добавлено через 25 минут ViterAlex, Файл .dat содержит последовательность собранных отсчётов (покадрово) в бинарном виде. Каждый отсчёт имеет размер short 16 бит. итог, как мне сказали, допустим мы выбираем (грубо говоря) 3 имени каналов, сделать нужно цикл , читаем этот диапазон выбранных строк, по строчно т.е
0
|
||||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
||||||||||||
| 22.08.2014, 13:13 | ||||||||||||
PARS_OF_WRITE_FILE
1
|
||||||||||||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
||||||
| 22.08.2014, 13:30 [ТС] | ||||||
|
ViterAlex, Где брать вот этот элемент ? Enumerable
а то сразу 12 ошибок всё разобрался ![]() Добавлено через 8 минут в структуре
0
|
||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||||||||
| 24.08.2014, 02:07 | |||||||||||||||||
Запись в dat-файл выполняется после записи в par-файл. Выводится окошко с вопросом "Сохранить dat-файл?". Это сделал для контроля процесса работы. В окончательном варианте это, конечно, нужно убрать. DatFile.cs
1
|
|||||||||||||||||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|
| 25.08.2014, 07:19 [ТС] | |
|
ViterAlex, Всё понял, сейчас буду разбираться по .dat файлу.
Кстати, по поводу контроля размера файлов, нужно , чтобы конечные файлы не превышали размер 1Гб. Если один из файлов (.par и .dat) будет превышать размер в 1Гб, то должны создаваться следующие два файла (.par и .dat) , и имена файлов должны быть такими: "имя_часть_N" , где N - порядковый номер файла начиная с 1. Добавлено через 42 минуты .par файл не правильно записывается
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 25.08.2014, 12:36 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|
| 25.08.2014, 12:56 [ТС] | |
|
ViterAlex, оригинал .par файла есть ? там есть в некоторых местах "p?", так вот в нашей версии эти значки занимают больше половины файла, а после них только пустой отступ, в общем что-то не правильно записывается , приложил файлы которые записываются
0
|
|
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
|||||||||||
| 28.08.2014, 06:52 [ТС] | |||||||||||
|
ViterAlex, Практически сделал, осталось сделать один цикл , вчера весь вечер просидел так и не получилось, если зайдёшь то вот:
опять структура .par файла, есть параметры:
Да, ещё и сохранение нужно сделать(которое описано выше), в интернете нет ничего подходящего, по поводу такого сохранения.
0
|
|||||||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
||
| 28.08.2014, 07:33 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
|
||||||
| 28.08.2014, 08:18 [ТС] | ||||||
|
ViterAlex, только что сделал, проверил, вроде всё правильно
вот так:
0
|
||||||
| 28.08.2014, 08:18 | |
|
Сохранение файла в формате txt Сохранение файла в bmp формате Сохранение в формате xml Сохранение в .exe формате
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|