このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

REALbasic でファイルメーカーのレコードを ID で指定する

発言者:田中求之
( Date Saturday, December 05, 1998 01:23:40 )


上記の方法について REAlbasic のメーリングリストに記事を投稿したのですが、
どうやらはなからできないと思っている方も少なくないようなので、こちらにも
投稿しておきます。

R1 の REALbasic では、ID を使って直接 に ObjectSpecifier
を組み立てることはできませんが、以下のように GetStringComparison...
と GetTestObjectDescriptor を組み合わせることで、ID によるレコード
指定が可能です。

* AppleScript で書くと records whose ID = XXX という指定方法を
  用いるわけです。

  dim objA as AppleEventObjectSpecifier
  dim ev as AppleEvent
  dim myDesc as AppleEventDescList
  dim myID as string
  
  objA = GetStringComparisonObjectDescriptor("=   ","prop","ID  ",myID)
  ev = NewAppleEvent("core","getd","FMJ3")
  ev.ObjectSpecifierParam("----") = GetTestObjectDescriptor("crow",nil,objA)
  if ev.send then
    myDesc = ev.replyDescList
    // myDesc に AppleEventDescList 形式でレコードのデータが収まっている
    // ので、あとは必要な cell の値を抜き出して処理する
  end if

myID には "96.0" のように、Real を String に変換したものを収めておきます
(StringComparison を用いるため。型変換はファイルメーカーに任せるわけです)

レコードのデータすべてではなく、特定のセルの値だけが欲しいなら、cell 指定の
ObjectSpecifier を組み立てる中で、上記の Comp と Test によるレコード指定を
使うことになります。

光岡 輝雄 さんからのコメント
( Friday, December 25, 1998 18:35:14 )

>// myDesc に AppleEventDescList 形式でレコードのデータが収まっている
>// ので、あとは必要な cell の値を抜き出して処理する

すいません。AppleEventDescList 形式というのがわかりません。
どこかに資料ありますか?
また、この方法でFM上のグラフィックデータを取り出せますか?

田中求之 さんからのコメント
( Saturday, December 26, 1998 01:51:53 )

REAlbasic のリファレンスに説明は載ってますよ(内蔵のオンラインリファレンスで
引けます)。

なお、DescList 型についてちゃんと理解するには(RB の実装がどういう点を省いて
いるのか等)、Inside Macintosh を読むしかないのですが…


>また、この方法でFM上のグラフィックデータを取り出せますか?

現在の REALbasic R1 は、DescList からグラフィックデータをとりだしたりする
ことはできません(文字列、整数、FolderItem しか扱えません)。このため、画像は
扱えません。

光岡 輝雄 さんからのコメント
( Monday, December 28, 1998 12:59:06 )

>REAlbasic のリファレンスに説明は載ってますよ

うっ。すいません、よく調べもせず...
よくわかりました。ありがとうございました。