Как проверить, существует ли подфайл в файле chm? - PullRequest
0 голосов
/ 05 января 2010

У меня есть несколько файлов CHM, и каждый из этих файлов представляет собой сжатый HTML-файл для 5 различных HTML-файлов. Я имею в виду, скажем, у меня есть 5 разных файлов с именами Альфа, Бета, Гамма, Дельта, Тета. Скажем, я сжал эти 5 в файле CHM. Позволяет назвать этот файл CompressedHtm.CHM. У меня есть> 500 из этих файлов. Теперь я хочу проверить, есть ли у всех этих> 500 файлов все 5 подфайлов (то есть Альфа, Бета, Гамма, Дельта, Тета). Есть ли способ проверить это в VC ++ 6.0 / MFC, не разбирая файлы CHM .?

Ответы [ 2 ]

1 голос
/ 23 января 2010

С Free Pascal поставляется полностью автономный (*) исполняемый файл CHMLS для командной строки, который позволяет просматривать содержимое файла CHM. Он существует для нескольких платформ.

Вы можете выполнить это, используя каналы, а затем обработать вывод.

Я случайно застегнул exe для sb еще несколько дней назад, вы можете получить их здесь http://www.stack.nl/~marcov/chmls.zip

(или, если вы мне не доверяете, загрузите версию Windows XP для fpc 2.4.0)

(*) Я не знаю состояние на win9x.

Вывод выглядит так:

 <Section> <Offset> <UnCompSize>  <Name>
 0               0            0  /#ITBITS
 1        27737212       192334  /#STRINGS
 0              70          133  /#SYSTEM
 1        22414493       169080  /#TOCIDX
 1        26847375       339904  /#TOPICS
 1        27187279       294757  /#URLSTR
 1        27482036       255176  /#URLTBL
 1        27929546      1174749  /$FIftiMain
 1        22411742         2751  /$OBJINST
 0               0            0  /$WWKeywordLinks/
 1        24122411       628812  /$WWKeywordLinks/BTree
 1        24751223       111371  /$WWKeywordLinks/Data
 1        24862594         2378  /$WWKeywordLinks/Map
 1        24864972            1  /$WWKeywordLinks/Property
 0               0           70  /_#_README_#_
 0               0            0  /baseunix/
 1        10656150         1395  /baseunix/_stat_ver.html
 1        10651853         1438  /baseunix/_stat_ver_kernel.html
 1        10654717         1433  /baseunix/_stat_ver_linux.html
 1        10650407         1446  /baseunix/_stat_ver_linux_old.html
 1        10653291         1426  /baseunix/_stat_ver_svr4.html
 1        10452426         1438  /baseunix/arg_max.html
 1        10644473         1510  /baseunix/bitsinword.html

Файлы, начинающиеся с # и $, являются внутренними файлами.

(инструменты - это утилиты, которые поставляются с библиотекой CHM Free Pascal, которая поддерживает поддержку чтения / записи CHM независимо от других инструментов для документации и справочных систем Free Pascals. Она независима от ОС, и, насколько мне известно, она отлично работает в OS X / PowerPC64

0 голосов
/ 06 января 2010

Справка HTML использует IE для отображения. Поэтому вам просто нужно использовать веб-браузер для перехода по URL-адресу, например, mk: @MSITStore: c: \ WINDOWS \ Help \ htmlhelp.chm :: / apiref.htm. Если файл не существует, вы получите DWebBrowserEvents2 :: NavigateError с кодом состояния 404. Обратите внимание, что вы можете получить другие ошибки в современных версиях Windows, поскольку Microsoft ограничила свое использование из-за проблем безопасности .

...