none
Чтение и редактирование файла своего формата RRS feed

  • Вопрос

  • Есть структура, но не знаю как сделать чтение файла(тобиш вывод данных из файла на экран), а как редактировать - вообще пока не соображу, не могу открыть формат. Помогите. Binaryreader советовали, но ничего не получилось.
    11 июля 2012 г. 7:37

Ответы

  • Файл имеет определенную структуру, которая описана в wiki, 20 байт отводятся под заголовок, в котором описывается сигнатура, число записей, кол-во различных типов полей, длина одной записи (на сколько я понял), и размер таблицы строк. Вам нужно разобраться как пишутся данные после этого залоговка и считывать из файла их по байтово с заданного индекса заданное число, а после уже конвертировать в строку. На этом может уйти много времени и пока, если есть возможность, лучше сделать первую версию программы, которая будет работать с cvs, а дальше уже писать свой риадер их протокола.


    Для связи [mail]

    • Предложено в качестве ответа LXGDARKEditor 12 июля 2012 г. 6:56
    • Помечено в качестве ответа Death666Metal 12 июля 2012 г. 9:25
    12 июля 2012 г. 6:52

Все ответы

  • Понятие формат файла чисто условное, оно нужно для программ пытающихся открыть их. Всё зависит от того, что Вы туда запишите. "не знаю как сделать чтение" - вот пример. "а как редактировать - вообще пока не соображу, не могу открыть формат." - вот пример. Алгоритм редактирования такой: читаете файл в объект, манипулируете содержымым этого объекта, потом записываете модифицированные данные в файл.

    • Изменено YatajgaEditor 11 июля 2012 г. 8:06 Исправил ссылку
    11 июля 2012 г. 7:45
    Модератор
  • Первая ссылка 404. С редактированием разобрался, немного торможу. Как открыть тогда?
    11 июля 2012 г. 7:54
  • Не сильно давно делал подобное.
    Пользовался бинреадером как раз с бинвритером.

    Всё как Yatajga ответил.
    Переводишь свою структуру в тот формат который прочтёшь.
    Хоть в строку, хоть в байты, хоть просто сериализацией (хмл или двоичной).

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

    11 июля 2012 г. 7:55
  • Исправил ссылку, посмотрите.
    11 июля 2012 г. 8:08
    Модератор
  • private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
                string text = File.ReadAllText("dbc//SpellIcon.dbc");
                MessageBox.Show(text);
    }

    Он мне каракули выдает в messagebox. Это, скорее всего, из-за отсутствия структуры файла.
    11 июля 2012 г. 8:21
  • Скорее всего из-за неверной кодировки, если содержимое файла нормально.
    11 июля 2012 г. 8:28
    Модератор
  • Ну как сказать.. Я работаю с WoW, близарды чудят.. Формат .dbc конвертируется в .csv и читается спокойно, но я не хочу его конвертировать в .csv, так как это будет глуповато. Поэтому и хочу его сразу открыть. Структура имеется, даже вики есть. Содержимое нормально, так как я открывал в другой программе его. Хочу свою сделать.
    11 июля 2012 г. 8:32
  • Формат .dbc конвертируется в .csv и читается спокойно
    "Конвертируется" вашей программой или нет? А "читается спокойно" вашей программой? Вы начинаете вопрос с "файл своего формата", а потом выясняется что файл близаровский. С удовольствием поможем, только давайте подробности (два моих вопроса выше). Да и ссылку на вики, если можно.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    11 июля 2012 г. 8:47
    Отвечающий
  • Моей программой не конвертируется. .csv читается спокойно, но именно, что .csv. Wiki.

    Правдо, я расчитываю на еще несколько файлов такого же формата.

    11 июля 2012 г. 9:17
  • В том то и дело, что .dbc эта база данных, а .csv это текстовый файл таблицы данных. то есть по сути, читая .csv вы читаете текстовые данные, а .dbc это двоичные данные имеющие определенную структуру. Тут мало прочесть, но еще нужно разобрать блоки данных, по полочкам. Так что задача не такая тривиальная как может показаться. Сложно дать вам совет по этому поводу. Одним классом тут не обойтись.

    Давайте начнем с малого. Что по вашему нужно сделать в первую очередь и что из этого у вас сделать не получается?


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    11 июля 2012 г. 9:34
    Отвечающий
  • Мне надо открыть мой файл .dbc, затем вывести содержимое на экран.
    11 июля 2012 г. 9:43
  • Мне надо открыть мой файл .dbc, затем вывести содержимое на экран.
    Так он ваш или не ваш. Если вы сами сформировали данные и записали их в файл то операция открытия и отображения будет обратной. Покажите код создания и записи файла.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    11 июля 2012 г. 10:05
    Отвечающий
  • Вы не поняли, этих .dbc файлов много, а мне конкретно надо открыть 1 .dbc файл. Под этим я имел ввиду слово "мой". То есть тот, который я выбрал.
    11 июля 2012 г. 13:10
  • Ну вроде вся проблема "чтения и вывода на экран" 
    заключается в преобразовании входного файла, в понятный программисту формат.
    Тот же csv подошёл бы.
    А это уже вывести в ту же таблицу не так не понятно как.

    То есть нужно просто код, переводящий данные из файла .dbc в что-то.

    Есть код?
    Или библиотека, в которую кидаешь файл, а она выдаёт что-то новое.

    Если кода нет, есть понимание, какая структура у этого файла?
    Что за каким байтом(количеством байтов) идёт и тд.

    А то может получиться, что тема будет "C#. Чтение и редактирование .dbc".
    Ну и далее спрашивается как прочесть .dbc файл, что-то поменять, и записать обратно.

    Каракули там выдало наверное просто потому, что файл не текстовый сам по себе, а двоичный, архивный или ещё какой-то.
    Что естественно.

    • Изменено INFEL8 11 июля 2012 г. 13:20
    11 июля 2012 г. 13:17
  • Файл имеет определенную структуру, которая описана в wiki, 20 байт отводятся под заголовок, в котором описывается сигнатура, число записей, кол-во различных типов полей, длина одной записи (на сколько я понял), и размер таблицы строк. Вам нужно разобраться как пишутся данные после этого залоговка и считывать из файла их по байтово с заданного индекса заданное число, а после уже конвертировать в строку. На этом может уйти много времени и пока, если есть возможность, лучше сделать первую версию программы, которая будет работать с cvs, а дальше уже писать свой риадер их протокола.


    Для связи [mail]

    • Предложено в качестве ответа LXGDARKEditor 12 июля 2012 г. 6:56
    • Помечено в качестве ответа Death666Metal 12 июля 2012 г. 9:25
    12 июля 2012 г. 6:52