喫茶XRAYトップページ

[スレッド全体
]

[12675] HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/1 (月) 16:03:32 Mr.XRAY
HTML Help Workshop なんですが,[印刷] や [オプション] 等のボタン類の設定が
できませんでした.
HHP ファイルに [WINDOWS] セッションを追加すれば可能であることが分かりました.
で,追加しました.

http://mrxray.on.coocan.jp/Delphi/Others/Win32HLP2ChmHLP.htm#fig37

この [WINDOWS] セッション は

  Wnd1=値1, 値2, 値3, 値4, 値5,,,,

という構造になっています (文字列のパラメータは " で括る).
たまに見かける設定の記述です.
以下のように,ちょっとしたノウハウがあります.参考までに.
CSV 関係の質問,検索ヒットは結構あるので.

    LTextList := TStringList.Create;
    try
      // カンマ区切の文字列を必要な分だけ作成してしまう
      LItemCnt := 20;
      LTextList.CommaText := DupeString(',', LItemCnt - 1);

      // 必要なパラメータだけ設定していく
      LTextList[0]  := AnsiQuotedStr(LHelpTitle, '"');
      LTextList[1]  := AnsiQuotedStr(LFileName + '.hhc', '"');
      LTextList[2]  := AnsiQuotedStr(LFileName + '.hhk', '"');
      LTextList[3]  := AnsiQuotedStr('', '"');
      LTextList[9]  := '0x60720';
      LTextList[10] := '200';
      LTextList[11] := '0xE';
      LTextList[12] := '[200,200,800,600]';
      LTextList[13] := '0x0';
      LTextList[14] := '0x0';
      LTextList[LTextList.Count - 1] := '0';

      // 最初のパラメータの値を代入してからループするのがミソ
      LWinText := LTextList[0];
      for LIndex := 1 to LTextList.Count - 1 do begin
        LWinText := LWinText  + ',' + LTextList[LIndex];
      end;
 
      // LWinText ではなく LTextList.CommaText を書き込むと
      // 余分な " (ダブルクォーテーション) が付加されてしまう
      // もしかしたら方法があるかも知れないけど・・・
      LIniFile.WriteString('WINDOWS', 'WND1', LWinText);
    finally
      FreeAndNil(LTextList);
    end;
 
何だか知らないけれど,
面白いように CHM ヘルプに変換できます.ハマりました (笑)


[12676] Re:HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/1 (月) 16:35:51 Mr.XRAY
 面白いように CHM ヘルプに変換できます.ハマりました (笑)

Google で [HLP CHM 変換] のキーワードでこの記事のページをクリックしたのは
1 件しかありませんでした.
あまり需要はないのかも知れません.
記事を書いた本人 (私です) が楽しんでいるだけかも知れません.ハイ.


[12709] Re2:HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/13 (土) 22:45:27 taka
▼ Mr.XRAYさん
>  面白いように CHM ヘルプに変換できます.ハマりました (笑)
>
> Google で [HLP CHM 変換] のキーワードでこの記事のページをクリックしたのは
> 1 件しかありませんでした.
> あまり需要はないのかも知れません.
> 記事を書いた本人 (私です) が楽しんでいるだけかも知れません.ハイ.


さっき気が付いたのですが
hlpプロジェクトからchmプロジェクトへの変換サポートされていたのですね。

HTML Help Workshop

Help
 Introducing HTML Help
   Converting existing help projects

File : New : Project
Convert WinHelp project にチェック

次へ

hlpプロジェクトと
新しい保存先(chmプロジェクト)を指定して
変換


変換後
(1) Windows-1252の影響だと思いますが
.hhkファイルも文字化けしてインデックスキーワードが完全に壊れます

(2) .htm
charset=Windows-1252
になっていて文字化するので

cygwin(もしくは git bash)が入っていれば一括置換
find ./ -type f -name "*.htm" -exec sed -i -e "s/charset=Windows-1252/charset=Shift_JIS/g" {} \;


英数字の単純なファイルだけのものはプロジェクト変換に成功したのですが
日本語のファイル名をたくさんつかっているプロジェクトは変換に失敗しました。


プロジェクト変換の失敗理由が表示されないので、原因はわかりません。


[12710] Re3:HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/13 (土) 22:57:58 taka
/cygdrive/c/Program Files/HTML Help Workshop

$ grep -R "Windows-1252" ./
バイナリファイル ./gencnv.dll に一致しました

$ strings gencnv.dll | grep "1252"
Western (1252)
text/html; charset=Windows-1252

$ strings gencnv.dll | grep "charset="
text/html; charset=Windows-1252
text/html; charset=Windows-1250
text/html; charset=Windows-1251
text/html; charset=Windows-1253
text/html; charset=Windows-1254
text/html; charset=Windows-1256
text/html; charset=Windows-1257
text/html; charset=Windows-1258
text/html; charset=shift_jis
text/html; charset=big5
text/html; charset=GB_2312-80
text/html; charset=KS_C_5601-1987
text/html; charset=Windows-1255
text/html; charset=Windows-874


HTML Help Workshopは
内部的には、shift_jisという値があるようなので、
charsetを変更できるような裏技があるのかもしれないですね?


[12713] Re4:HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/14 (日) 23:36:32 Mr.XRAY
▼ takaさん

> /cygdrive/c/Program Files/HTML Help Workshop
>
> $ grep -R "Windows-1252" ./
> バイナリファイル ./gencnv.dll に一致しました


ひえ〜 !!

> 内部的には、shift_jisという値があるようなので、
> charsetを変更できるような裏技があるのかもしれないですね?


なるほど.dll レベルで書き換え... ほえ !


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82