自作ソフト サポート情報コーナー

FM00019: フォント名一覧を見ると異常終了する

[作成:1999/10/10 ・ 更新:1999/12/29]



発生・再現できるバージョンや環境

Font Manager Ver.1.23b またはそれ以前のバージョン
Microsoft Windows 95, 98, 98SE (WindowsNT, Windows2000では発生しません)


問題の詳細

フォント名一覧を見ようとすると「実行時エラー 5」が出て異常終了する。


原因

  1. フォントファイル名に2バイト文字(全角アルファベットや日本語)が使われている
  2. Windows95系のOSとWindowsNT系のOSでは、Unicode文字の扱い方が違う

これは、文字をUnicodeによって内部処理をかけていたところとAnsiによって内部処理をかけていた部分が混在し、このようなことが発生しました。
1バイト文字に関しては、UnicodeもAnsiも同じ文字コードを返していたようで、エラーが発生していませんでした。
さらに、WindowsNTではAnsiによって内部処理がかけられるところが、Visual Basicの仕様によりUnicodeによって処理がかけられていたため、発生しませんでした。


ユーザーができる対策

2バイト文字が使われているフォントを一度アンインストールし、アンインストールしたフォントファイルをを1バイト文字だけのファイル名に変更を行ってから、再度インストールする。
以下に例を示します
修正前 "日本語.TTF"
修正後 "Japan.TTF"

ソースコードが操作できる方は、"Funuction.bas"の"CutFilePath"関数の部分を、以下のように書き換えて、コンパイルしてください。
修正前 For intCutting = 1 To Len(szFilePath)
   If ChrW(Asc(Right(szFilePath, intCutting))) = "\" Then
    CutFilePath = Right(szFilePath, intCutting - 1)
   Exit For
  End If
Next intCutting
修正後 For intCutting = 1 To Len(szFilePath)
   If ChrW(AscW(Right(szFilePath, intCutting))) = "\" Then
    CutFilePath = Right(szFilePath, intCutting - 1)
   Exit For
  End If
Next intCutting


開発側が行っている対策

現在Ver.1.25で以上のようにソースコードを書き換えて、対策しました。


その他

大変ご迷惑をおかけしており、申し訳ありません。
デバッグ情報を提供していただいたユーザーの方に感謝いたします。






[fm00019.html 1999年12月29日更新]


 | トップページ  | もくじ  |
Copyright© 1997-2022 Yuichiro SAITO All rights reserved.
転載・リンクされる場合は、事前に「このサイトの説明」をご覧ください。