Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18

Преобразование неизвестного формата (.US0) в .txt

11.01.2013, 23:34. Показов 5267. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста способ, как преобразовать формат .US0 (его структура известна) в .txt в Builder C++. Например, как с использованием посимвольного чтения сделать вывод на экран информации из заголовка файла и так далее, а в следствии сохранения этой информации в файле текстового формата в определенной последовательности?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.01.2013, 23:34
Ответы с готовыми решениями:

Преобразование визуальных данных из формата RGB в YUV (4:2:0)
Помогите, пожалуйста, добрые люди. При создании программы преобразовании визуальных данных из формата RGB в YUV наткнулся на проблему в...

Преобразовать текст из *.txt (в любой кодировке) в картинку формата *.bmp
Привет) Нужна помощь с написанием программы..нужна информация) Задание: Написать программу, которая преобразует текст из *.txt (в...

Преобразование исходного текстового формата txt в таблицу xls
Здравствуйте, подскажите пожалуйста как перевести из *.txt файла в *.xls, просмотрев несколько видеороликов на Youtube, я только изобразил...

30
 Аватар для zvoronz
273 / 241 / 56
Регистрация: 29.05.2012
Сообщений: 889
11.01.2013, 23:39
Т.к. не знаю структуры опишу общие шаги.
1. Описать структуры описывающие структуру заголовка.
2. Описать дополнительные структуры.
3. Пишем код который открывает файл в режиме бинарного чтения, создаёт структуру заголовка, читает заголовок. В соответствии со структурой создаёт и заполняет дополнительные структуры.
4. Написать код который выводит в текстовый файл инф. в нужном вам виде.
1
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
11.01.2013, 23:45  [ТС]
Вот структура данного файла.
Чтобы описать структуры необходимо задавать массивы, как я понимаю?
Вложения
Тип файла: docx Структура файла.docx (20.1 Кб, 30 просмотров)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
12.01.2013, 15:10
Omniknight, вероятно, документ битый, вордом не открывается - проверь и еще раз выложи.

Добавлено через 25 минут
Ну, слегка битый оказался - libreoffice пофыркал малость и открыл.

Впредь лучше выкладывай в виде текста или изображения. Вот то, что открылось:
Структура файлов формата УС0

Файл УС0 предназначен для хранения ТМИ медленноменяющихся параметров и состоит из следующих полей:
– заголовок файла (от 40 до 295 байт);
– таблица паспортов;
– наименование и значения ТМП.
Структура заголовка приведена в таблице П.1.1.

Таблица П.1.1 – Структура заголовка файла УС0
УС0Имя изделияИмя испытанияДата испытанияТНТККПРФLКомментарий
4 байта8 байтов8 Байтов8 байтов4 байта4 байта2 байта1 байт1 байт(L) байтов

В первом четырехбайтном поле находятся литеры УС0.
В полях "имя изделия", "имя испытания" и "дата испытания" содержатся символьные строки по восемь байт.
Поля ТН и ТК содержат начальное и, соответственно, конечное время из этого файла и задаются в формате числа с плавающей точкой.
Поля КП (количество паспортов) и L (длина комментария) являются целыми без знака, при значении L равным нулю комментарий отсутствует. В комментарии первые четыре байта в формате числа с плавающей точкой занимает временная поправка, по которой производится пересчет текущего времени.
Структура паспорта объекта приведена в таблице П.1.2.


Таблица П.1.2 – Структура паспорта объекта
Надо так понимать, что в одном файле хранится несколько паспортов - у каждого свой заголовок.
Приведи информацию полностью и еще выложи один файлик .US0 для измывательств общественности.
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
04.02.2013, 00:41  [ТС]
Файл полностью открылся, или то что выложили - это все что открылось?
Суть в том, что сначала идет заголовок один, потом множество паспортов, а потом идет информация.
Файл формата .US0 занимает большой объем памяти. Сюда вряд ли его можно разместить. Постараюсь найти минимального размера и выложить.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.02.2013, 12:02
Цитата Сообщение от Omniknight Посмотреть сообщение
Файл полностью открылся, или то что выложили - это все что открылось?
Это все, что было мне открыто. Восстановлением документов было заниматься как-то недосуг.
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
05.02.2013, 00:26  [ТС]
Я скоро в Питер вернусь и выложу все корректно.
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
15.02.2013, 11:19  [ТС]
Структура файлов формата УС0

Файл УС0 предназначен для хранения ТМИ медленноменяющихся параметров и состоит из следующих полей:
– заголовок файла (от 40 до 295 байт);
– таблица паспортов;
– наименование и значения ТМП.
Структура заголовка приведена в таблице П.1.1.

Таблица П.1.1 – Структура заголовка файла УС0
УС0 Имя
изделия Имя
испытания Дата
испытания ТН ТК КП РФ L Комментарий
4
байта 8
байтов 8
Байтов 8
байтов 4
байта 4
байта 2
байта 1
байт 1
байт (L)
байтов

В первом четырехбайтном поле находятся литеры УС0.
В полях "имя изделия", "имя испытания" и "дата испытания" содержатся символьные строки по восемь байт.
Поля ТН и ТК содержат начальное и, соответственно, конечное время из этого файла и задаются в формате числа с плавающей точкой.
Поля КП (количество паспортов) и L (длина комментария) являются целыми без знака, при значении L равным нулю комментарий отсутствует. В комментарии первые четыре байта в формате числа с плавающей точкой занимает временная поправка, по которой производится пересчет текущего времени.
Структура паспорта объекта приведена в таблице П.1.2.


Таблица П.1.2 – Структура паспорта объекта
Имя
объекта Индекс Ф Т А0 А1 Размерность
параметра
12 байтов 2 байта 1 байт 1 байт 4 байта 4 байта 8 байтов

Поля “Имя объекта” и “Размерность параметра” – символьные. Поля “Индекс”, “Ф” (формат объекта) и “Т” (тип объекта) являются целыми без знака.
Поля “А0” и “А1” (масштабные коэффициенты) задаются в формате числа с плавающей точкой.
Существуют следующие форматы объектов:
а) 0 - массив (кадр, строка) неопределенной длины;
б) 1 - длина 1 байт;
в) 2 - длина 2 байта;
г) 4 - длина 4 байта;
д) 8 - длина 8 байтов.
Выделяют несколько типов объектов:
а) 0 - время в формате числа с плавающей точкой;
б) 1 - измеряемый параметр в кодовом виде;
в) 2 - измеряемый параметр в виде масштабированного целого без знака;
г) 3 - измеряемый параметр в виде числа с плавающей точкой;
д) 4 - структура измерительной системы;
е) 5 - элемент структуры;
ж) 6 - время в формате беззнакового целого.
При рассмотрении структуры паспорта необходимо учитывать следующее:
а) масштабные коэффициенты А0 и А1 используются для типов объекта 2 и 3.
б) допустимые сочетания форматов и типов объектов отмечены в таблице П.1.3.

Таблица. П.1.3 – Допустимые сочетания форматов и типов объектов
Формат Тип объекта
0 1 2 3 4 5
0 Х Х Х
1 X X X X
2 X X X X X
4 X X X X X X
8 X

в) имя структуры измерительной системы не должно превышать восьми символов, а имя элемента структуры при этом содержится в виде, представленном в таблице П.1.4.

Таблица. П.1.4 – Вид имени элемента структуры
Имя структуры Номер (адрес) элемента в данной структуре
8 байтов 4 байта

Возможны следующие разновидности файлов:
а) 0 - универсальный файл.
б) 2 - В6Н.
в) 1 - файл с укороченным индексом. В файле с укороченным индексом отличие от файла В6Н заключается лишь в формате представления поля "Индекс"

Таблица. П.1.5– Вид массива файла с укороченным индексом

ХХ Индекс
2 бита 14 битов

Два бита ХХ содержат индикатор длины значения параметра и означают следующее:
– 00 - массив переменной длины;
– 01 - значение занимает 2 байта;
– 10 - значение занимает 4 байта;
– 11 - значение занимает 8 байтов.
В файле с укороченным индексом однобайтные коды не допускаются.
г) 3 - c кодами (признаками) ошибки.

Структура файла УС0 с дешифрованной информацией

Для унификации всей дешифрованной информации в качестве базовой выбрана разновидность файла УС0 - файл с укороченным индексом.
Паспорта объектов имеют следующие поля:
а) формат объекта: 4 - длина четыре байта;
б) типы объекта определяются исходя из значений таблицы 1.3:
1) Т = 1 и Т = 3;
2) для временной информации Т = 0 и Т = 6.
Диапазон изменения индекса от 0 до 65535, т.е. два байта. Значение параметра определенно форматом объекта - четыре байта.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
16.02.2013, 12:15
Omniknight, таблицы в таком виде нечитабельны, хоть картинки выложи что ли...
И выкладывай уже файлик для тестирования - пусть он будет большой, инет сейчас у многих позволяет не беспокоиться за траффик.
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
18.02.2013, 22:32  [ТС]
Вот снимок.
Миниатюры
Преобразование неизвестного формата (.US0) в .txt  
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
18.02.2013, 22:33  [ТС]
http://webfile.ru/6384716
вот ссылка на файл формата УС0
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
02.03.2013, 10:47  [ТС]
http://files.mail.ru/DFC4225EE... ABB39E5DCA
Вот здесь хранится файл в zip.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
03.03.2013, 11:08
Структурки заголовков можно так оформить:
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
struct us0_file_head {
    char us0_letters[4];
    char device_name[8];
    char test_name[8];
    char test_date[8];
    float start_time;
    float end_time;
    unsigned short records_count;
    char RF;
    unsigned char commentary_length;
    char *commentary;
    us0_file_head( ) {
        commentary = NULL;
    }
    ~us0_file_head( ) {
        if ( commentary ) {
            delete[] commentary;
        }
    }
};
struct record_head {
    char object_name[12];
    unsigned short index;
    unsigned char object_format;
    unsigned char object_type;
    float a0, a1;
    char param_dimension[8];
};
Тем не менее, считывать заголовки придется, видимо, вручную, каждое поле по-отдельности, так как разработчики формата не захотели позаботиться о выравнивании структур...

Понятно, в каком виде хранятся заголовки, однако неясно, как хранятся сами данные. Что за массивы неопределенной длины - где задается их размер? Что за "структура измерительной системы"?

Добавлено через 11 часов 52 минуты
Хотя, нет, это я вроде соврал... там же куча однобайтовых массивов и более объемные типы стоят на кратных позициях. Если выравнивание поставить в один байт, то вполне можно читать структуры целиком. Это надо попробовать.
1
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
03.03.2013, 11:22  [ТС]
Это тема моей выпускной квалификационной работы, хотя программированием никогда я не занимался. Но дипломный руководитель говорил, что нужно файл открывать в посимвольном чтении. Вот какой он дал пример:
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
Чтение данных из файла в поток
 
C++ Examples: 
 
/*
The following example uses a button, a string grid, and an
Open dialog box on a form. When the button is clicked, the
user is prompted for a filename. When the user clicks OK,
the specified file is opened, read into a buffer, and closed.
Then the buffer is displayed in two columns of the string
grid. The first column contains the character values in the
buffer. The second column contains the numeric values of the
characters in the buffer.
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int iFileHandle;
  int iFileLength;
  int iBytesRead;
  char *pszBuffer;
  if (OpenDialog1->Execute())
  {
    try
    {
      iFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
      iFileLength = FileSeek(iFileHandle,0,2);
      FileSeek(iFileHandle,0,0);
      pszBuffer = PChar(AllocMem(iFileLength+1));
//    pszBuffer = new char[iFileLength+1];
      iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
      FileClose(iFileHandle);
      for (int i=0;i<iBytesRead;i++)
      {
        StringGrid1->RowCount += 1;
        StringGrid1->Cells[1][i+1] = pszBuffer[i];
        StringGrid1->Cells[2][i+1] = IntToStr((int)pszBuffer[i]);
      }
      delete [] pszBuffer;
    }
    catch(...)
    {
      Application->MessageBox("Can't perform one of the following file operations: Open, Seek, Read, Close.", "File Error", IDOK);
    }
  }
}
Вложения
Тип файла: txt Чтение Builder.txt (1.4 Кб, 7 просмотров)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
03.03.2013, 11:32
Это просто вычитка файла в массив char и отображение в таблице в виде пар "литера - число". Пример этот не имеет практически никакого отношения к теме.
Если нужно таким же макаром читать эти US0 - милости прошу.

А так нужно больше информации по формату, выбивай ее из препода.
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
03.03.2013, 11:42  [ТС]
А что нужно именно спросить, я в этом деле совсем чайник. Он пример этот дал, но ни какой пользы мне это не принесло. Пример я сделал, но он не рабочий.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
03.03.2013, 13:14
Цитата Сообщение от Omniknight Посмотреть сообщение
А что нужно именно спросить
Цитата Сообщение от BRcr Посмотреть сообщение
Понятно, в каком виде хранятся заголовки, однако неясно, как хранятся сами данные. Что за массивы неопределенной длины - где задается их размер? Что за "структура измерительной системы"?
Сначала идет заголовок файла - его структура и размер описаны. Затем идут заголовки "паспортов" по очереди, структура их описана, количество их задается в заголовке файла. До этого момента все ясно.
Как потом идут данные? Что они из себя представляют и где именно задается размер каждого отдельно взятого куска данных?

Еще у тебя упоминаются различные разновидности файлов данного формата: универсальный, ВН6, с укороченным индексом и с дешифрованной информацией. Выложенный тобой файл к каким относится?
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
03.03.2013, 13:26  [ТС]
В данной программе должен использоваться ус0 с укороченным индексом.

В ус0 после паспортов идут значения параметров с привязкой их к шкале времени. В войсках используется программа на подобие по созданию отчетов, делается в принципе тоже самое, сейчас выложу руководство той программы.

Добавлено через 4 минуты
http://files.mail.ru/205C1C941... 57E16B54A4 здесь файл с руководством оператора.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
03.03.2013, 13:58
Старайся грузить файлы на форум, а-то скоро придет LK и порубит все твои ссылки...
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 18
03.03.2013, 14:00  [ТС]
Я пробовал, просто нельзя было(( велик размер
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2013, 14:00
Помогаю со студенческими работами здесь

Чтение из файла неизвестного формата
Всем привет.Я изучаю си,по работе и по учебе параллельно.Практически дошел до струтур,но дальше,включая чтение из файла пока не добрался.Но...

Чтение бинарных файлов неизвестного формата
Доброго времени суток всем. Вот гуляя по просторам интернетов регулярно натыкаюсь на программы которые могут например, читать файлы игр,...

Считать побайтно файл неизвестного формата зная его структуру
Столкнулся с проблемой, нужно считать файл, у файла не прописано расширение, известна байтовая структура: заголовок файла: 1 байт:...

Загрузить в мемо текст из неизвестного .txt с известным path
Привет. Подскажите как залить в Memo файл *.txt в заданной папке. Файл меняет свое название. Наличие его постоянно, то есть проверка не...

Исследование "неизвестного" формата (отрезать начало файла до определённого заголовка)
Здравствуйте! Программированию я учусь собственными силами, о преподаваемом в университетах или на курсах не имею ни малейшего понятия....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru