VS> Никто не сталкивался с неверной длиной поля SubField, которые следуют VS> за подзаголовками JAM в hdr файле?
VS> По сути sizeof(JAM)+JAM.SubLen должны указывать на следующий заголовок, VS> но этого не происходит.
VS> Голдед отображает 98000 сообщений в области.
VS> Я добавил в програмку функционал сканирования файла на предмет поиска VS> JAM\0 вперед от sizeof(JAM)+JAM.SubLen и насчитал 133000 заголовков.
VS> Может кто из них пишет неправильный SubLen? или я неправильно читаю?
По факту дела обстоят таким образом, что sizeof(JAM)+JAM.SubLen указывают на следующий заголовок только после упаковки базы командою `sqpack *` или другой аналогичной. Обычно же, если размер сообщения уменьшился (например, перед отправкою его отредактировали и что-то выбросили), то никто не заботится о перетаскивании последующих сообщений впритык к новому (укороченному) хвосту уменьшившегося сообщения.
Иными словами, прежде чтения заголовков из файла JHR неизбежным предшествующим шагом должно быть чтение файла JDX, в котором лежат смещения заголовков. Причём в файле JDX некоторые записи могут соответствовать удалённой фидопочте, так что надо отбрасывать те записи, в которых смещение или CRC равны FFFFFFFF. Вот тебе для примера мой код на языке JavaScript, занимающийся именно таким чтением файла JDX:
После этого есть полный набор смещений и есть количество заголовков неудалённой фидопочты, оно-то и является числом сообщений в эхе.
Располагая полным набором тех смещений, по которым в файле JHR располагаются заголовки фидопочты, становится возможно читать такой заголовок по его номеру; вот для примера мой код на языке JavaScript, достигающий этой цели:
Фидонет будет великим и гипертекстовым! [Ru.Mozilla] http://Mithgol.Ru/ Mithgol the Webmaster. [Братство Нод] [Team А я меняю subj]
... [ADoM] Закусываешь ли ты пикси мерцающей собачатиной, Victor? --- Знаешь ли ты, Victor, что "нагороженный" _не_ пишется через "ё"? * Origin: ── А остальное?... ── А остальное карбиды вольфрама!!.. (2:50/88)