Tips

Intel ベースの Mac を検出する方法

日付2007/05/17
ID46338 (英語原文参照)
バージョン2004.6r2
プラットフォームMac OS X

4Dの Gestalt 関数は、Intel ベースの Mac を検出できません。例えば、Apple 社のドキュメントに基づいて次のコードを記述したとします。

$LongInt_errorCode := Gestalt ("sysa"; $LongInt_returnValue)

このコードの戻り値は、Intel ベースの Mac では 10、PowerPC では 2 になるはずです。しかし実際には、動作マシンに関係なく 2 が返ります。この問題を回避するには、Applescript の system attribute コマンドに sysa を渡して戻り値を得てください。4Dの LAUNCH EXTERNAL PROCESS コマンドを使って Applescript を利用するコードは次のようになります。

C_TEXT($Out)
C_TEXT($In)
LAUNCH EXTERNAL PROCESS("osascript -e 'system attribute \"sysa\" '";$In;$Out)

この結果、テキスト変数 $Out に、Intel Mac の時には 10 が、PpowerPC の時には 2 が戻り値として返ります。LAUNCH EXTERNAL PROCESS コマンドおよび Gestalt 関数の詳細は、ランゲージリファレンスで確認してください。

Gestalt:
http://www.4d.com/docs/CMJ/CMJ00488.HTM

LAUNCH EXTERNAL PROCESS:
http://www.4d.com/docs/CMJ/CMJ00811.HTM

Apple Gestalt Manager Reference:
http://developer.apple.com/documentation/Carbon/Reference/Gestalt_Manager/index.html