あまつぶ

6.5

 とんぷーすたっととQT3.0Jについての続報。正確に書くと、QT3.0J+MacOS Easy Open+StandardGetFile+.TXTで終わるファイルの関係といったほうがいいかもしれない。この4つのことが重なったときに、ファイル選択ダイアログでファイルを選ぶと「このアプリケーションで作られたものではないからトランスレートするか」という旨のダイアログが表示されるようだ。
 QT3.0Jをインストールした状態で、MacOS Easy Openが有効になっていて、かつTEXT書類のトランスレートが有効なときに、StandardGetFileというシステムのファイル選択ルーチンを使ってファイル名が「.TXT」で終わるテキストファイルを選択するとこの症状が起きるらしい。これのどれが1つかけても起こらないことから、今まで自分で再現できていなかった。ファイルの選択には通常はStandardGetFileというルーチンを使うのが普通だから、それを使っているのであろうと思われるCuTEというアプリケーションでも同様のことが起こった。ファイル名を変えてみると起こらないから、たぶん「.TXT」で終わっているファイルに限定して起こるらしい。ひょっとしたらPC Exchangeが関係しているのかとも思ったが、はずしても症状は変わらなかったのでたぶん関係ないと思われる。
 QT2.5上では、「〜.TXT」のファイルも問題なく選択できるから、たぶんQT3.0のバグではないかと思うのだが、それはちょっとわからない。デバッガでファイル選択の部分を追ってみたところ、StandardGetFileから帰ってくる前にダイアログが表示されているようなので、このルーチンを使うかぎりは回避する方法はなさそうだ。が、とりあえずなんとか回避しないといけないのでいくつかのアプリケーションで試してみたところ、CodeWarriorのIDE、SimpleTextでは問題なく開くことができることがわかった。SimpleTextについてはAppleが提供しているソースファイルがあるから、ファイルを開くのにどういうルーチンを使用しているかを探してみた。StandardGetFileは使用されていなくて、代わりにCustomGetFileが使用されていて、またQuickTimeの有無によって、CustomGetFilePreviewというルーチンと使い分けられていた。試しにCustomGetFileを使う方法に書き直してみたが症状は変わらず、結局SimpleTextがしているのと同じようにQTがインストールされているときにはStandardGetFilePreviewというルーチンを使うようにしてみたところ、うまくいった。プレビューを必要としているわけではないので意味はないのだが、まあこれで回避できるならまずはこれでといったわけで1.40b4をリリース。ソースの変更は、ファイル選択ダイアログの場合わけと、ヘッダファイルImageCompression.hをインクルードしたこと。プロジェクトの方は、ppc用のプロジェクトにQuickTimeLibを追加。
 QT3.0のなにかのドキュメントを読んだらこのことに関する記述があるのかもしれないが、ファイル名が「〜.TXT」の場合にだけ起こるのだから、バグの可能性もあると思う。米国ではQT3.0.1というのがそのうちリリースされるらしいからひょっとしたらこのバージョンで直っているのかもしれない。QT3.0.1がリリースされたら早速試してみようと思うが、それで直っていなかったらまずはドキュメントを一通り読んでみてそれらしい記述がなければAppleに聞いてみるくらいしかないんだろうか。
 今までのファイル関係のルーチンを使わず、Carbonで採用されるらしいNavigation Serviceのルーチンを使うように変更すれば問題は解決するのかなと思いつつ、まだSDKをちゃんと見てないのでどうやって使うのかすらわからない。68kのコードも生成してくれるのかもわからないが、一度ダウンロードしてあったものを間違って消してしまったようなのでまたそのうちダウンロードしてこないといけないな。
 半分解決したような、解決していないような妙な状態だが、またなにかわかったらここにも報告しようと思う。

to June 4, 1998 ↑ to June index → to June 6,1998