RealBasic University

このコラムはStone Table Softwareのオーナーであり、またREALbasic Developerの編集者でもあるMarc Zeedar氏により書かれたものを、著者の許可を得て翻訳したものです。この翻訳はHREM Researchにより提供されています。この日本語版へのご意見はRBU-Jまでご連絡下さい。

URL: http://www.applelinks.com/rbu/005/
INDEXに戻る

REALbasicのヘルプ

REALbasicはかなり単純な言語です。そして、最も古くて、最も単純なコンピュータ言語の1つであるBASICの形式ですので、その基本的な構文を学ぶのは困難ではありません。 ときおり構文が少し異なることがありますが、RBは伝統的なBASICの用語であるDIM, FOR, IF, ASC, MIDなどを使います。もし、あなたがBASICを知っているならば、REALbasicは短時間で学習できるでしょう。しかしながら、たとえあなたが電子レンジでポップコーンを料理するようにプログラムした経験がないとしても、RBの学習が難しいものではないということを見いだすでしょう。

REALbasicの事実上の言語は数十のコマンドと関数とで構成されています;しかし、これらのコマンドはREALbasicでできることのほんの第一歩です。REALbasicはオブジェクト指向プログラム object-oriented programming 言語であるということを忘れないでださい。 オブジェクトは強力です、それはオブジェクトは特定のことをどのように処理するかを前もって知っているからです。また、 オブジェクトは他のオブジェクトから自分を識別する能力を持っています。

例えば、プッシュボタンコントロールは押されたときの対応を知っています。(これはかなり単純なコントロールです。)しかし、プッシュボタンは、大きさ、ラベル、位置、状態などを制御する能力などの、それほど明らかではない他の機能(多くは、他のオブジェクトと共通です)をもっています。コントロールのそれらの設定は属性 property と呼ばれます。あなたがプログラムすることの多くは、プログラムの現在の状態にそれらの設定を反映させることです。例えば、プッシュボタンがアクティブであるのが適切でないときには、あなたはプッシュボタンの状態を使用不能(disabled)な状態に設定するでしょう。

REALbasicは、それぞれに特異的なあるいは共通の属性をもつ、既に定義された多くのオブジェクトを内蔵しています。沢山あるREALbasicのオブジェクトの全てがもつ機能を習得することは困難な大仕事です。しかし、あなたが思っている通りにプログラムを動かすためには、これは重要なことです。

先週のレッスンから、オブジェクトの名前、ピリオド、属性の名前をタイプすることによってオブジェクトの属性にアクセスしたことを思い出しましょう。多くの属性はまったく単純です:幅(width)はオブジェクトの幅を設定し、また取得します、一方、高さ(height)はオブジェクトの高さにたいして同じことを行ないます。 しかし、他のものは混乱する場合もあります。

例えば、ポップアップメニューのテキスト(text)属性は現在の設定のテキスト(選ばれたメニューのテキスト)を返します。しかし、メニューを持つことのできるベーベルボタン(bevel button)コントロールでは、ボタンのテキストにはキャプション(caption)を、そして、選択されたメニューの番号を返すために menuvalue を使っています。

このように、REALbasicのオブジェクトはよく似ていますが、それらは全く同じではありません。 別の難問があります:ある属性は読取(設定あるいは変更不能)しかできません。また、あるものは数値しか、ことによると真か偽の設定 (論理型 boolean) しか受け付けません。

幸運なことに、これらのすべての属性の名前を覚える必要はありません。REALbasicはオブジェクトとその属性のリスト、およびそれらの設定値のタイプを示す組み込まれたヘルプ機能を持っています。多くのコマンドには、コマンドがどのように使われるかを示す、サンプルコードまでついています。

練習:REALbasicのIDEのウィンドウメニューに行き、そして"Language Reference"を選択(あるいはCommand-1を押す)して、REALbasicのオンラインの言語参照ガイド Online Reference を開いてみましょう。

REALbasicのオンラインヘルプの使い方に習熟することは有能なプログラマになるために必須です。 私は REALbasicを何年も使っていますが、構文的に間違っていないことを確かめるために、絶えずオンラインヘルプを参照します。それは多くの時間を節約し、その後のいらだちを減少します -- あとでコードがコンパイルされないのを発見したり、あるいは、何故ルーチンが動かないのかを理解するために数時間を費やし、やがて inStr コマンドの引数(パラメータ)の順序が不注意で逆になっていたということに気付くよりも、10秒の予防処置のほうがいいでしょう。

REALbasicのヘルプは使いやすくできています。項目のリストは左の欄にあり、選択された項目の説明が右の欄に現れます。そして、2つの検索の仕方があります:左のリストはすべてのトピックをアルファベット順に示すか、あるいは項目をトピックによってグループ分して示します。この2つの表示はリストの上段の"Alphabetical"あるいは"Themes" をクリックすることにより選べます。

構文に関するヘルプ

ヘルプが必要なコマンドや関数を見つけるのは第一段階です。次に、ヘルプの内容が何を意味するのかを理解する必要があります。プログラムの構文は判りにくいかもしれません、しかし、REALbasicのヘルプが何を言おうとしているのかを理解することはきわめて重要です。

inStr コマンドを見てみましょう。それは他の文字列の中にある注目する文字列の位置を返す関数(値を返すルーチン)です。これは他の文字列の中にある 一連の文字を見つけるということの凝った言い方です。次はこの項目に関するREALbasicのヘルプです:

これはいったい何を意味しているのでしょうか?圧倒されてしまいそうですが、一度理解してしまえば、それ程でもありません。最初の部分はコマンドの構文 syntax です。この場合には、

result = InStr([start,] source, find)

はコマンドがどのように使用されるかを示しています。括弧の中の項目は inStr コマンドの引数(パラメータ)parameters です。

構文の少し下は個々の引数を示しています。結果 result は整数 integer です。別の言い方をすれば、このコマンドは検索文字列が見つかった位置をあなたに知らせます。もし、"The quick brown fox" の中にある"fox"を探すと、inStrコマンドでは17を返してくるでしょう。

"start"という項目が角括弧に囲まれていることに気が付きましたか? これはその引数(パラメータ)が省略可能であることを示しています。もし、引数の周りに角括弧がない場合には、その引数は必ず含めなければなりません。さもないと、REALbasicは構文エラーを生成します。この場合には、start は数値で、検索の開始位置を表します。あなたは inStr がいつでも最初に現れた項目を見つけるということに気付いたでしょう。 もし、2番目や3番目に現れる位置を見つける必要のある場合には、どうすればいいでしょうか? 答えは最初に見つかったあとから検索を始めることです(最初の検索の値を保存し、2回目の検索の開始点として 保存した値を使いながら、再び検索を行ないます)。

inStr の最後の2つの引数は"source" と "find"です-- 両方とも 文字列 strings(テキスト)です。Source はその中を検索される文字列で、find は検索する文字列です。

従って、次のものは正しい検索の構文です:

inStr("The quick brown fox", "fox")

もちろん、これだけをREALbasicにタイプしても、コマンドの結果に対して何もしていないので、あなたはエラーメッセージを得ることになるでしょう。このコマンドは数値を返しますので、その数値に対して何かをしなければなりません:変数に保存する、あるいはそれを表示するなど。次のコードをプッシュボタンに置いて、プログラムを走らせて、そしてプッシュボタンをクリックしてみましょう:

   msgBox str(inStr("The quick brown fox", "fox"))

(このコードはメッセージを表示する msgBox ルーチンを呼び出します。そして、msgBox はテキストしか表示しませんので、inStr によって返された数値を str 関数によってテキストに変換しています。)

あなたは多くのREALbasicのヘルプは構文の説明の後に「ノート Notes」セクションがあることに気付いたでしょう。これは重要な部分です!例えば、inStr が検索している文字列を見つけられなかったときにはどうなるのでしょうか?これは以下のようにして調べることができます:

   msgBox str(inStr("The quick brown fox", "dog"))

しかし、もし、ノートを読めば、REALbasicが「find文字列がsource文字列内に見つからないときには、0 (ゼロ)が返されます」と言っているのを見いだすでしょう。

おお!これは知っておくべき情報だ!今では、あなたのプログラムは結果を確かめることが可能で、もし、結果がゼロならば、文字列が見つからなかったということがわかります。

では続けて読んでいきましょう。ノートは「InStr は大文字小文字を区別しません」と続きます。これは何を意味するのでしょうか?これは、inStr("The quick brown fox", "fox")inStr("The quick brown fox", "FOX")の両方が17を返すということを意味します。すなわち、search文字列が大文字であるか小文字であるかということ、あるいはsearchおよびfind文字列の大文字/小文字が一致していなくても、inStr はまったく気にしません。大文字/小文字の両方を別々にチェックしなくてもいいので、ほとんどの場合、これは好都合です。しかし、もし大文字と小文字を区別したい場合には、inStrコマンドは使用すべきではありません。

ノートセクションの下は実例 Examples のセクションです。ここでは、実際のコードを見つけることができます。それらはコマンドの使用例を見られるので、非常に有用でしょう。

コードが点線で囲まれているのに気が付きましたか?これはその一連のコードをあなたのプロジェクトにドラッグできることを示しています!ほとんどタイプすることなしに REALbasicのコマンドを実験する素晴らしい方法です。コードをプログラムにドラッグすれば、好きなように編集することもできます。

実例の下には、いま調べているコマンドに関連のあるコマンドをリストしている"See Also" セクションがあります。例えば、inStr の場合には、"See Also"は MidLeft および他の文字列関数(文字列を取り扱う関数)を含んでいます。それらはブルーで下線が引かれているのに気が付きましたか?これらはホットリンクです。すなわち、クリックすることにより、 そのコマンドにジャンプすることができます。(ノートセクションの inStrB への参照のように、 このページの別の場所にも そのようなホットリンクがあることに気付くでしょう。)

オブジェクトに関するヘルプ

今まで見てきた inStr 関数は簡単なコマンドです。 リストボックス listbox のような コントロール control はもっと複雑です。

オンラインガイドの listbox のヘルプを見てみましょう。(最も簡単な方法はガイドが開いているときに「list」と入力することです。するとREALbasicは入力された文字で始まるリストの最初の項目を選択してくれます。)

この説明と inStr の説明との間に(これが非常に長いと言うこと以外に)幾つかの違いに気付くでしょう。先ず最初に、リストボックスはオブジェクトですので、そこには"Super Class"セクションがあります。これは基本的にその母親です -- すなわち、コントロールとして基本クラスである"RectControlに基づいています。この意味することは、リストボックスが全てのRectControlの特質(属性)(幅や高さなど)を継承 inherited しているということです。それらの属性はこのヘルプにはリストされていませんが、 それらは listbox にも有効ですので、このことを知っておくことは重要です。

その下には属性 Properties が並んでいます。それらはあなたが変更することのできる設定です。幾つかのもの、例えば、"initialValue"は太字で示されています。これは、それらがプログラムの実行時には変更することは出来ないことを意味しています。幾つかは決して設定することがないでしょう、またその他のものはオブジェクトを選択して、属性ウィンドウからプログラムの実行前に設定することが可能です。

属性リストの次には、イベント Events のリストがあります。イベントはそのオブジェクトに発生する出来事です。例えば、オブジェクトはオープンされ、あるいはクローズ、クリックされるでしょう。我々の「ホットヘルプ」プログラムを憶えていますか。カーソルがオブジェクト(コントロール)を指し示したときに、適切なヘルプの文章を表示するように、"mouseEnter"イベントを利用しました。ここにはmouseEnterイベントは見られませんが、これは母親(rectControl)から受け継がれているためです。

注意:プログラム(コード)によってオブジェクトのイベントにアクセスすることは出来ません;listbox.gotFocus はエラーを生じます。(これはREALbasicが用意しているイベントに対してのみ適用されます -- あなたが作成したオブジェクトではイベントを呼び出すことができます。)そのかわり、オブジェクトのイベントはオブジェクトのコードウィンドウに現れます。そこにそれぞれのイベントに対して適切なコードを記述します。ヘルプウィンドウのリストは入力できるコードを示しているのではなく、それぞれのイベントがどのような引数(パラメータ)を処理するかを示しています。

最後に、イベントを下の方にたどると、メソッド Methods があります。 メソッドは他の言語でのプロセジュア(procedures)あるいは関数(functions)にあたります。REALbasicは完全なオブジェクト指向です(全てのものがオブジェクトである)ので、あなたのサブルーチンは常にメソッド(オブジェクトのメソッド)です。

メソッドは何かを行ないます。あるメソッドは1つか2つの引数(パラメータ)を必要としますが、他のあるものはそうではありません。メソッドは属性にアクセスするのと同じように呼ぶ出すことができます。 listbox1.deleteAllRows は正しいコマンドです("listbox1"という名前のオブジェクトが存在すると仮定して)。もしメソッドが引数(パラメータ)を必要とするならば、それらの引数をメソッドのあとに書きます(括弧で囲むか、あるいは囲まないで)。下の両方ともREALbasicの正しい文章です:

listbox1.addRow "This text will be added as a new row"
listbox1.addRow("This text will be added as a new row")

(もし2つ以上の引数(パラメータ)が必要な場合には、引数はコンマで区切ります。)

リストボックスのような複雑なコントロールのノートと実例のセクションは必ず読んでおくべきです。 実例のあるものはあなたがまだ使ったことのないテクニックや性質を使っていますので、あなたは戸惑うかもしれなせん。しかし、実例を試してみることはすぐれた学習方法です。このコラムがすすむにつれて、我々はリストボックスやその他のコントロールを勉強していくでしょう。

さらに進んだヘルプ

REALbasicのオンラインヘルプは全てを含んでいるわけでもなく、また完全でもありません:間違い、ミスタイプ、幾つかのコマンドの書き忘れさえあります。また、それが取り扱っていない、あるいは充分には説明していない多くの事柄があります。しかし、悩むことはありません:あなたが利用できる他の情報源があります。

REAL Software社ではPDF形式のREALbasicマニュアルを3つ用意しています:Language ReferenceDeveloper's GuideおよびTutorialです。(もし、Tutorialを自分で試してみる場合には、tutorial filesも有ると便利でしょう。)

The Language Reference は本質的にオンラインヘルプと同じです:REALbasicの全てのコマンドについて説明しています。

The Developer's Guide はREALbasicによるプログラムの方法論や技術的な説明をしています。これも素晴らしいですが、豊富なサンプルコードや実例がもっとあればさらに有用であったろうと思います。

The Tutorial は SimpleTextのようなワードプロセッサを自分で作っていく プロセスを順を追って説明しています。残念ながら、プロジェクトを速く進めようとして、そこでやっていることの説明がほとんどされていません、また別のやり方が説明されていません。「これをやって、それをあそこに置いて、これを入力して、そして、これで出来ました」という調子です。経験を積んだプログラマにとっては、これは素晴らしいデモでしょう。しかし、もしあなたが今までプログラムをした経験がないならば、これでは、なぜあなたが行なったことが上手くいくのか(あるいは、どこかで混乱したときには、なぜ上手くいかないのか)についてあなたを悩まし続けるでしょう。

(REALbasic Universityで私が取ろうとしているアプローチはより多くの手がかりと、なぜ我々がこのことを行なうのかという説明を含んでいます。それはより時間がかかりますが、より多くのことが学べるでしょう。より速いペースを望む上級の学生諸氏は、説明の部分をスキップして下さい。)

REAL Software社のマニュアルが充分でなければ(多分、そうでしょうが)、O'Reilly社が出版しているMatt Neuburg氏の素晴らしいREALbasic: The Definitive Guideがあります。REALbasicに関して知っておくべき全てのことがこの一冊の本に詰まっています。私はよく知らない分野のことを始める場合には必ずこの本を参考にします。(例えば、私は今まで socket を使う必要がありませんでした。もし、それを使い始める場合には、その前にMattの本の一節を読むでしょう。)

重要な注意:Matt氏の本は入門解説書ではありません -- それは調べるための図書です。そのタイトルのように、それは"決定版ガイド(The Definitive Guide)"です。しかし、それはプログラムの方法について教えてはいません。

もし、これら総てでも不十分な場合には、REAL SoftwareのREALbasic Network User Groupメーリングリストがあります。これは質問に対する回答をすばやく得る非常に貴重は情報源です。しばしば、技術的な回答をREAL Softwareのプログラマから得ることさえあります!メーリングリストの過去の情報のサーチエンジンもあります -- まず質問をする前にここをチェックして、誰かがあなたの質問にすでに答えているかを調べるのは良い考えです。

(インターネットのメーリングリストについてよく知らない人のために:それは本質的にはe-mailですが、メッセージが全てのメンバーに送られます。 特定のフォルダにメッセージを振り向けるようにe-mailソフトで設定すると メーリングリストをうまく使うことができます。REALbasicのメーリングリストでは一日当たり100通をこえるような非常に多数のものになりがちですので、あなたはそれらが通常のe-mailを混乱させるのを好まないでしょう。すべてのメールを読む必要はありません!私は通常興味のある話題のメールを見るだけの時間しかありません。複数のメールを1つの長いe-mailにまとめたダイジェスト版を購読することも可能です。) (訳者註REALbasic日本語メーリングリストもあります。詳しくはここから。)

これで全部ではありません!もし、あなたが本当にREALbasicの Goods を手に入れたければ、無数のREALbasic専門のウェブサイトの探検を始めなさい。 そこにはサンプルプログラム、フリーのコード、あなたのプログラムで使うことのできるクラスやルーチン、REALbasicプラグイン(REALbasicの機能を拡張するもの)および解説などがあります。REALbasic Webringからスタートして、そこからいろんなところ(現時点では、私のサイトも含めて、107のサイトがリストされています)に行くのが最良の方法でしょう。多くのサイトは webring には無い多くのサイトにリンクしています。

次週

我々は最初の本物のプロジェクトをはじめます。簡単ですが有用なユーティリティを作ります。それは数回のコラムにわたるでしょう。しかし、それを行いながらREALbasicについて学習するでします。

Letters

最初の手紙はRyan Goudelockeさんからです:

Marc,

あなたがRBUに対して得ている積極的な反応 - これでまた1つ増えました - をみてうれしく思います!RBのドキュメントはあるコントロールを調べたい場合には申し分ありません。しかし、全体的なプログラムのデザインに関してはほとんどユーザにまかされています。 Matt Neuberg氏の本を買って読まなければ、ほとんどプログラムを始めることすらできません。あなたのコラムは疑いもなく正しい方向への大きな一歩です。

質問: あるウィンドウに結合されたオブジェクトがいつスコープから外れるのか、そして、どのようにして他のウィンドウで定義されている関数からそれらをアクセスするのかということがときどきよく判らなくなります。 RBの振舞いは、私の知る限り、全てをメモリー上に置く言語(例えば、古典的なBASIC)や全てのクラスや公開された関数はどこからでもアクセスできるC++とは異なっています。 このことは今後のこのコラムの有益なトピックになるのではないでしょうか - クラスとそのウィンドウ間(これはモジュールにもあてはまると思います)での情報の保存/転送に関しては無数の方法があるようですが、どれがベストなのでしょうか?

とにかく、いい仕事を続けてください!

激励をありがとう、Ryanさん!私は今までのREALbasic Universityの進展と反応に非常に喜んでいます、そしてREALbasic Universityの購読が多くの人々の重要な毎週の行事となることを望みます。

あなたの質問に関しては、私は将来のコラムでその問題を詳しく調べるでしょう。

REALbasicを習い始めたばかりの人のために、簡単にRyanさんの質問について説明しましょう。彼は変数のスコープ scope に関する問題について述べています。 Myvar と呼ぶ変数をもつサブルーチンがあるとしましょう。このとき、 Myvar はそのサブルーチンだけに局所的(local)です -- 他のルーチンはその変数の存在を知らないので、Myvar にアクセスしようとするとエラーを生じるでしょう。 ウィンドウは、そのウィンドウに局所的な、それ自身の変数やそのウィンドウ内のサブルーチンを持つことができます。しかし、別のウィンドウはそれらを知ることはないでしょう。他の変数は大局的(global)にすることができます -- それらはプログラムのどこからでも、どのウィンドウによっても、どのルーチンによってもアクセス可能です。

Ryanさんが話している問題は、ユーザに質問をするダイアログボックスがあるとした時に、その答えをダイアログボックスを開いたルーチンに知らせるための最善の方法は何かということです。 もし、ダイアログボックスの中に(局所的変数内に)答えを保存するとすると、答えはダイアログボックスがクローズされるときに消えてしまいます。呼び出しているウィンドウ(あるいは、ルーチン)内に答えを保持しようとすると、ダイアログボックスはそれを知らないないので、それにアクセスして内容を見ることができません。

最も簡単な方法は大局的変数を使うことです。例えば、gTheResult という文字列変数を作れば、ダイアログボックスはその中に答えを設定することができます。もし、ユーザがダイアログをキャンセルした時には、gTheResult を空にすればいいでしょう(gTheResult = "")。

しかしながら、大局的変数はメモリーを浪費します。上のような単純なダイアログでは、このことは問題ないでしょう(特に、複数のダイアログで gTheResult を再利用すれば)。しかし、もし、あなたのプログラムが会計ソフトであって、ダイアログボックスが顧客の記録を編集することになっているときにはどうでしょうか:あなたはこのダイアログに顧客の全記録のコピーを渡しますか? ダイアログが複数の記録、あるいはデータベース全体にアクセスしなければならいときはどうでしょう。全データベースの複製コピーを受け渡すのは明らかに効率的ではありませんし、さらに、ダイアログボックスで元のデータを変更することがある場合には、ことは複雑になります。

私もREALbasicを始めた頃はこのことについて余り気にせず、プログラムがすぐに複雑にからみ合ったものになり、あとでそれを後悔したことを思い出します。実際、私の Z-Write ではウィンドウ間で情報を渡すために5つから6つの異なる方法を用いています -- これはよくありません。それは必ずしもユーザに影響を与えはしませんが、プログラムの改良をより困難にします(ときどき、自分でもよく解らなくなります)。例えば、ダイアログボックスに新しい機能を追加しようとすると、 情報を渡すのに使った方法を変更しなければなりません。(しかし、私はこの失敗から学びました、そして、Z-Writeを改訂する度に、このまずいコードを少しづづすっきりしたものにしています。)

このことは今後のコラムで探究するでしょう:これには明らかに多くのやり方があります、そしてそのどれもが完全に間違っている、あるいは正しいということはありません。

今週の我々の最後の手紙はJules Steinhausenさんからです:

私はThink Pascal、その後のCodewarriorで苦労していますので(そこでは最も単純なプログラムエラーが私のMacをクラッシュしたりフリーズしたりして開発を遅らせています)、REALBasicを歓迎しています。HyperCardなども実に柔軟で、プログラムも容易であり申し分ありません。しかし、本当に遅いです。無駄話はこれくらいにして。

私の質問:1.チュートリアル(訳者注:REAL Software社のThe tutorial)ではApp classをテキストエディタの基礎として使っています。私は単にウィンドウを元にしたワードゲームを作りました -- ゲームを通してこのウィンドウは見えているので、これでいいでしょうか、あるいは私のゲームを作り直すべきでしょうか。

2.どのようにすればMS Wordのファイルを読めるでしょうか?File typeをMS8W (だった思います) にしてみましたが、通常のファイルの選択ダイアログはそれらが選択できるように表示してくれません。

追伸:55歳に身では、新しいやり方を学ぶのは容易ではありません。しかし、私の古い友人(Ed Reppert)が私を納得させたように、オブジェクト指向の構造を理解するのは「Damascusへの道」のような仕事であり、それはいつの日か目をくらます閃光とともに現れるのでしょう。希望は捨てていません。

Julesさん、新しいことに挑戦しているあなたに感心しています!新しい技術を学ぶのに年をとり過ぎているということは決してありません。新しい挑戦はあなたを若々しく保ちます!

あなたの質問へ:

1) チュートリアルでは単に複数の書類が扱えるようにApp classを使っています。 あなたのプログラムのウィンドウとしてREALbasicの基本のウィンドウしかない場合には、そのウィンドウがあなたのプログラムです。ウィンドウを閉じればあなたのプログラムは終了します(それは実際には何も終了させません、しかし、ユーザができることは何もありません -- 終了以外には使えるメニューさえもありません)。App classが有れば、それがプログラムです-- それが終わる時にあなたのプログラムは終了します。 メインのウィンドウが閉じられてもApp classは動いていますので、それはユーザの指示に反応することが可能です(そして、適切なメニューを選択可能にすることができます)。このことについては今後のコラムで詳しく述べられるでしょう。

2) WordのファイルはMicrosoftが所有権を有する特殊な形式です。いくつかの会社(DataVizのような) が彼等の変換ソフトをつくるのに十分なように仕様を解析してはいますが、Microsoftはその仕様を公開していません。Wordのような複雑な仕様の解析は容易なことでは有りません:これは多くの人々がRich Text Format (RTF)をデータ交換用のフォーマットとして使っている理由です。 RTFは複雑な書類を記述するテキストだけのフォーマットで、ワープロ間で文書を移すために使われています。最近、Z-Write のユーザがWordの書類を取り込めるように、私もRTFをテキストに変換するフリーウェアであるRTF-to-Styled Textを公開しました(WordはRTFフォーマットの出力が可能です)。RTF-to-Styled Textはオープンソースです(私は、Belle Nuit Montage氏のRTFParserを使いました)ので、あなたはREALbasicのソースコードをダウンロードすることができます。

このヘルプがみなさんのお役に立つことを祈ります。これで今週のコラムは終わりです -- お便り をどしどしお寄せ下さい。あなた方がREALbasicで何をしているのかを知るのは興味深いことです!

INDEXに戻る