SC/Rb/RR対応について

About SC/Rb/RR correspondence


 UDIのXは基本的に HyperCard用ですが、他の環境で動作するものもあります。 REALbasic や SuperCard で動作を確認したものは * REALbasic & SuperCard savvy * 、REALbasic でのみ使用できるものは * for REALbasic * などと表示しています。

 上記の表示はあくまで「動作確認したよ」と言うもので、これらの表示が無くてもSCやRbで使用出来るものもあると思います。目的のXが HyperCard 以外の環境で使えるかどうかをソースコードからチェックするスタックも作ってみました( UDI's Tool Lib. にあります)ので、目安として下さい。またメールなりBBSなりで問い合わせ頂ければ個々の XCMD について調べ、対応可能であれば修正します。なにせ数が多いので全部を調べるのはしんどいのです(^_^ゞ

 ちなみにSCは 3.6.3J、Rbは 2.1.2J でチェックしています。また以上の説明は全て「 OS 7〜9で」という注釈が付きます。

UDI's XCMDs includes 68K-code and is basically for HyperCard. The mark of "* REALbasic & SuperCard savvy *" identified 'can work with REALbasic2.x and SuperCard3.x'. The mark of "* for REALbasic *" is REALbasic exclusive use. XCMD without some mark is not inspected yet.



 REALbasic(以下 Rb ) や SuperCard 4(以下 SC4 ) や RuntimeRevolution(以下 RunRev )は 68K XCMD をサポートし、なおかつカーボンアプリを作ることが出来ます。カーボンアプリは OS X でネイティブに動作しますが、68K XCMD は OS X では動作しません。

 SC4 で 68K XCMD を利用したい場合は、必ず SC4 を Classic 環境で起動して下さい。また 68K XCMD を含んだプロジェクトをビルドした時は、UDI's Tool Lib. にある StayInClassic を利用して、「 OS X では起動しないカーボンアプリ」に変えてから配布して下さい。 SC4 も SuperCard Player も OS X ネイティブで起動してしまうので、68K XCMD を含んだプロジェクトを単体で配布するのはお奨め出来ません。
 Rb や RunRev で 68K XCMD を利用したい場合も、必ず Rb/RunRev を Classic 環境で起動して下さい。また 68K XCMD を含んだプロジェクトをビルドする時は、68K 用スタンドアローンとして作るのが確実です。( 68K 用アプリは OS9 でも、また OS X 上の Classic 環境でも動作します) Rb/RunRev は OS X ネイティブで起動してしまうので、68K XCMD を含んだプロジェクト/スタックを単体で配布するのはお奨め出来ません。

 OS X ネイティブの xcmd を作る予定は今のところありません。環境が整えばトライするかも知れませんが。

REALbasic (Rb) , SuperCard 4 (SC4), RuntimeRevolution (RunRev) supports 68K XCMD and can make carbon app. Carbon app works to a native with OS X, but 68K XCMD does not work with OS X.

Start in Classic environment by all means if you want to use 68K XCMD with SC4. If the project that you built includes 68K XCMD, use 'StayInClassic' in UDI's Tool Lib. This is a tool remodeling standalone in carbon app 'for Classic'. Because both SC4 and SuperCard Player have started with a OS X native, you must not distribute a 'project' including 68K XCMD.
Start in Classic environment with Rb/RunRev by all means if you want to use 68K XCMD with Rb and RunRev. Make it as standalone for 68K if you build a project including XCMD. ( 68K app works in even OS 9 and Classic environment on OS X ) Because Rb/RunRev have started with a OS X native, you must not distribute a 'project'/'stack' including 68K XCMD.

I don't consider that I make xcmd for a OS X native currently.




 HyperCard 以外の環境で使えない場合は以下の理由によります。


1)HyperCard2.0 XCMD インターフェースを使っている
 HyperCard 以外の環境では通常 1.0 インターフェースのみをサポートしています。  2.0 で拡張された外部ウィンドウ関連、フィールド関連のルーチンを使った XCMD は使えません。

  外部ウィンドウを作るもの
   ・・ UxBack、UxPalette、UxProgressBar、UxAnswer など
  ウィンドウにアクセスするもの
   ・・ UxCardToMovie、UxGetWindows、UxFlash、UxPrintCard など
  メッセージボックスにアクセスするもの
   ・・ UxFlashMsg、UxSubMsg、UxMsgBar など
  フィールドに直接アクセスするもの
   ・・ UxReadST、UxWriteST、UxRomanCA、UxReplaceStyle など


2)XCMD 内から HyperTalk を呼び出している
 SuperCard はスクリプト言語の互換性が高いので動作する場合もありますが、その他の環境では動作しないと思います。


3)XCMD 内から HyperTalk の変数を参照している
 2とほぼ同じですが、これも可能性はあります。 UxPlayMIDI などが該当します。


 ちなみに、マルチプラットフォームやウェブプラグイン環境での実行は、原理的に不可能と考えていいと思います。





 SuperCard プロジェクトへのインストール:(プロジェクトエディタ)

 1)Xをインストールしたいプロジェクトを開く。
 2)ツールメニューから「リソースマネージャ」を選択。
 3)右上の「ファイル:」ポップアップメニューから「開く..」を選択。
 4)開いたファイルダイアログで、目的のXの入っているスタックを選択。
 5)右上の「リソースフォーク」タブをクリック。
 6)リスト中から目的のXを選択し、「 < 複製 < 」ボタンをクリック。
  「 < 移動 < 」ボタンはオリジナルを削除します。ご注意。
  もしリソースIDが重複してしまった場合は、SuperEdit からIDを変更できます。

 SuperCard プロジェクトへのインストール:( SuperEdit )

 1)Xをインストールしたいプロジェクトを開く。
 2)ファイルメニューから「リソース読み込み..」を選択。
 3)開いたファイルダイアログで、目的のXの入っているスタックを選択。
 4)セーブダイアログで適当な名前を付けてテンポラリファイルを作成。
 5)ウィンドウ左下の「リソース」をクリック。
 6)リスト中から目的のXを選択し、「編集」メニューから「コピー」。
 7)インストールしたいプロジェクトの「リソース」をクリック。
 8)「編集」メニューから「ペースト」。

 REALbasic プロジェクトへのインストール:

 1) ResEdit で目的のXの入っているスタックを開く。
 2)目的のXを選択して「コピー」。
 3) File メニューの「 New 」で新たにファイルを作る。
 4)新しいファイルへ「ペースト」し、保存して ResEdit を終了。
 5)XをインストールしたいプロジェクトをRbで開く。
 6) ResEdit で作ったファイルをプロジェクトウィンドウへドロップ。


 SuperCard でも、REALbasic でも、希にXが使えなくなることがあるようです。リソースの扱いに無理があるんでしょうかね。もしおかしいと感じたら一旦Xを削除し、再度インストールし直して下さい。
 REALbasic でのインストールは基本的にファイルをプロジェクトウィンドウへドロップするだけですが、複数のXやその他のリソースが入っていると、どれかひとつだけが取り込まれるようです。ので、上記の方法が確実と思います。或いはインストール用のスタックをひとつ作って XCMD をインストールしてから、そのスタックを Rb のプロジェクトウィンドウへドロップしてもいいでしょう。

 XCMD/XFCN は引数も返値も「文字列型」で行います。特に REALbasic ではご注意下さい。例えば Boolean値を渡すときは "true" "false" という「文字列」を渡す必要があります。
 また引数を省略する時 HyperTalk では myXFCN( abc,, 123 ) という書き方が出来ますが、SC/Rb では myFCN( abc, "", 123 ) として下さい。
 XCMD も値を返すことがあります。 SC では HyperTalk と同じように、XCMD 実行後に the result を調べて下さい。 Rb で XCMD の返値を調べたい時は、XCMD を XFCN のように扱います。つまり myXCMD という XCMD を呼ぶ時に、xx = myXCMD() とします。例によって返値は文字列であることに注意して下さい。数値が欲しい場合は文字列から数値への変換( val() )が必要です。

You must not omit arguments.
( SC/Rb ) If you want to omit an argument, you must hand "" as a dummy to x. : myXfcn( a1, "", a3 )

XCMD/XFCN handles arguments by TEXT.
( Rb ) If you want to hand Boolean value to X, use TEXT of "true" "false". : myXCMD a1, "false"

XFCN return the value by TEXT.
( Rb ) If it is necessary, convert it to the type that you hope for. : aStr = myXfcn() / aNum = val( aStr )

XCMD may return a value.
( SC ) Read "the result" after XCMD execution.
( Rb ) Use that as XFCN. ( don't forget that it is TEXT ) : aStr = myXCMD()


-- 2002.11.15




UDI's XCMD Lib.

UDI's HomePage

inserted by FC2 system