Тема: DBC Viewer
Показать сообщение отдельно
Старый 05.08.2011, 09:30   #8
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
Лампочка

У меня есть идея к проекту, но времени сейчас нету ее реализовать, так что напишу тут и может кто соберется.
Идея в следующем: насколько я вижу в DBC файлах поля всегда по 4 байта и имеют один из 3х типов - int, float, string. Соответственно мы могли бы добавить автоматичнское распознавание типов колонок в DBC, например как это делает MyDbcEditor.
Это упростило бы просмотр файлов с неопределенным форматом и также упростило бы создание форматов т.к. им останется включать только имена колонок, а типы уже в редких случаях.
Я немного пореверсил MyDbcEditor, чтобы понять как он с этим справляется и вот результат.
Для различения float/int рассматриваются первые 1000 записей в колонке с int значением > 1. Затем
Код:
if ( count <= 0 || AvgAbs <= 50000000 || AvgBitsSet <= 4.0 )
    // INT
else
    // FLOAT
Там так же определяются флаги как отдельный тип от обычных чисел, чтобы их можно было показывать в хексе вместо десятичного вида. Для этого формула уже сложнее, но тоже в той же функции.

Однако сейчас DBC Viewer проходит по содержимому файла только 1 раз, что придется изменить (или сделать отдельную копию в памяти) для предварительного сбора статистики перед выводом содержимого.
Chameleon вне форума   Ответить с цитированием