Простой парсер. Загружает расширенный файл данных Micromine, сохраняет информацию из него (кроме метаданных), и сохраняет в выбранный файл в текстовом виде, с выбранным разделителем. При сохранении в CSV, в начало добавляется строка с указанием разделителя, данные экранируются. При сохранении в другие форматы, если разделитель это такой же символ, как разделитель дробей, данные экранируются (не всегда - см. ниже).
Можно запускать с параметрами:
- Параметр 1: файл данных, который нужно загрузить
- Параметр 2: имя файла, в который будет сохранён результат
- Параметр 3: разделитель.
Если хотя бы один параметр не указан, будет выведена информация о том, как использовать параметры. И далее будут запрошены имена файлов и разделитель. При любом запросе ввода, программа будет требовать нажать Enter после каждого важного сообщения. Это "ручной режим". Вне этого режима лишний ввод не требуется: можно просто передать параметры, и файл будет молча загружен и сохранён, либо выдано сообщение об ошибке.
При этом, если расширение выходного файла (параметр 2) не CSV, а выбранный разделитель представляет собой символ, который используется как стандартный десятичный разделитель (обычно запятая), и:
- программа находится в ручном режиме: будет запрошено, нужно ли экранировать данные
- программа находится не в ручном режиме: экранирование будет включено
При возникновении ошибок, сообщается, почему и примерно где они произошли.
В тестовом файле (table.str) есть три типа полей, поддерживаются только они.
- R - вещественные числа. Загружаются как данные. Сохраняются в Double, если возможно. Если нет (последняя запись в тестовом файле) - в Single. Дробная часть отсекается, как указано в настройках поля.
- N - натуральные числа.
- C - символьные данные.
Данные загружаются из буфера, независимо от их типа. Загружается массив байт, и из него загружаются данные - строка таблицы - после загрузки всех полей. В описании полей указано, какого размера записи, потому симолы переноса строки (0D 0A (13 10)) игнорируются.
Файл сохраняется в ANSI, поскольку в этой кодировке представлены текстовые данные в файле, и с ней хорошо открывается через Excel после сохранения. В метаданных указана кодировка ibm-5347_P100-1998, её назначение выходит за рамки задачи.
Реализовать разбор файла на Pascal или Delphi (на выбор, реализовано на Delphi). На входе - приложенный файл На выходе - данные в виде таблицы с возможностью выбора разделителя и сохранения в форматы txt, csv.