古籏一浩です。
At 2:02 97.6.1 +0900, Tsutomu YANO wrote:
必殺技として、MAC の OS がマウスカーソルを動かすのに使っているのと同じ、割り込み処理ルーチンもありますが...ここまでやるのはどうかと(^^;) よくしらないし(^^;)
VBLタスクは、私もやめた方がいいと言われた事があります。
一度もトライしたことがないのでなんとも・・・
古籏一浩です。
At 20:58 97.5.30 +0000, 仙台7200/90 wrote:
アイドリング処理とは,描画ループ中で何かをチェックするということなのでしょうか。それとも,根本的に違う処理なのでしょうか。
校正中で時間がないので、こんな感じというのを書いておきます。
ミスがあっても許してねf(^^;
アイドリング処理は以下のような感じです。
local fn doDialog evt = dialog(0) id = dialog(evt) case _wndClick 〜〜〜〜 case _btnClick 〜〜〜〜 case _efClick 〜〜〜〜 などなどのイベント処理 処理されたら関数から脱出するかフラグを用意 fn idlingProcess 何もイベントが発生していない&マウスが移動してない場合に 描画させる end fnといった具合です。
上級編で、6月中に解説したいと思います。
が、しばらくは忙しいので駄目ですf(-.-b
メーリングリストの皆さま、こんにちは。
おかげさまで、無事255文字以上ハンドルから取り出すことが出来、思いの処理をすることができるようになりました。
で、質問なのですが、今度はHyperCardへの返り値に255文字以上返したいのです。おそらく、こっちもハンドルを使えばいいのだろうと思い、適当なハンドルをつくりCALL BLOCKMOVE([hndl&],strPtr&,200)で値をいれHyperCardへ返すことに成功したのですが、ハンドルへすこしずつ(255文字ずつ)付け足していく方法がわかりません。
思いとしては、ループの中で、出てきた値を、一旦文字列変数へいれそれをハンドルへ付け足すという繰り返しにしたいのですが、その仕方がわかりません。
osErr% = FN HANDANDHAND([hndl&],strPtr&)
を使うのかなと思い実験したのですが、うまくいきません。
また、ハンドブックやリファレンスには、配列やSTRリソース、ファイルとハンドルのやりとりは載っていても、文字列変数とのやりとりは載っていないようなのでいまいちピンときません。
いつも質問ばっかりで申し訳ないのですが、よろしくお願いいたします。
古籏さん,返事が遅くなってしまいました。
アイドリング処理は以下のような感じです。
お忙しい中ありがとうございます。
だいたいのイメージは掴めました。実験してみたいとおもいます。昨日,古籏さんのホームページを見せてもらいました。すごく詳しいですね。あまりの量に圧倒されてしまいました。初級編1から順に勉強していきます。ところで,このページを印刷しようとすると,あちこちでホストスクリプトエラーが出てしまうのですが,これもFAQなのでしょうか。古籏さんのページは本にして売れるのではと思います。これほどの量の資料と教材を作って頂いて,広く公開されている姿勢には頭が垂れる思いです。重ねてお礼申し上げます。
FB-MLのみなさま、はじめまして。
さかたと申します。
自分なりにいろいろ調べたのですが、わからないので、お伺いします。
FBでMIDIを扱いたいのですが、参考になる書籍、ソースなどがなく困っています。
そもそも、マニュアルには
OPEN "C"
でmidi機器との通信ができるように書いてあるのですが、実際にはボーレートが合わずに通信できません。
MIDIマネージャを使おうにも、
(FB) Examples:Technical:Toolbox Routines:MIDI Mgr
というソースがあるのですが、これだけでは使い方が全くわかりません。
inside of MacでMIDIマネージャを調べるのが筋かもしれませんが、MIDIマネージャ自身がもうマイナーなので気が進みません。。。(手元にないという問題もあるのですが)
なにぶんマックでのプログラミングはよくわかってないので、よきアドバイスをお願いいたします。
古籏一浩です。
At 19:03 97.6.4 +0004, G.Sakata wrote:
inside of MacでMIDIマネージャを調べるのが筋かもしれませんが、MIDIマネージャ自身がもうマイナーなので気が進みません。。。
(手元にないという問題もあるのですが)
MIDI Managerは昨年だったかにQuickTime 2.1に飲み込まれまして(^^;
すでに存在していても意味がない(?)という状態です。
要するにQuickTimeを介せという事みたいです。
MIDI機器の制御というかデータを送信するという事ですか?
MIDI音源の型番もできれば載せてもらえるとグッドです。
でも、うちにはSC-55しかありませんが(^^;
Open "C"は、MZ-2500と接続してデータのやりとりをした程度です。
音楽に詳しい人がいたよ〜な(ぼそっ)
でへへへ伊藤です。ご無沙汰しておりますです。
At 19:03 97.6.4 +0004, G.Sakata wrote:
>inside of MacでMIDIマネージャを調べるのが筋かもしれませんが、MIDIマネージャ自身がもうマイナーなので気が進みません。。。(手元にないという問題もあるのですが)
MIDI Managerは昨年だったかにQuickTime 2.1に飲み込まれまして(^^;
すでに存在していても意味がない(?)という状態です。
要するにQuickTimeを介せという事みたいです。
MIDI機器の制御というかデータを送信するという事ですか?
MIDI音源の型番もできれば載せてもらえるとグッドです。
でも、うちにはSC-55しかありませんが(^^;
Open "C"は、MZ-2500と接続してデータのやりとりをした程度です。
音楽に詳しい人がいたよ〜な(ぼそっ)
ひ〜ん、わかりませ〜ん。ごめんなさ〜い。(TOT;;;;;;)
さかたです。
古籏さん、伊藤さん、リプライありがとうございます。
MIDI Managerは昨年だったかにQuickTime 2.1に飲み込まれまして(^^;
すでに存在していても意味がない(?)という状態です。
要するにQuickTimeを介せという事みたいです。
ということはQuickTime 2.1を調べるべきなのでしょうか?(なんかもっと大変そうだなぁ(;_;))
MIDI機器の制御というかデータを送信するという事ですか?
簡単なエディターを作成したいと考えています。
市販のMIDIシーケンサーやライブラリアンなどでも可能だとは思いますが、ぜひ自分なりのものを作成したいのです。
MIDI音源の型番もできれば載せてもらえるとグッドです。
でも、うちにはSC-55しかありませんが(^^;
機種はとりあえずJD990です。
MIDIの送受信さえできれば、あとはエクスクルーシブのフォーマットの問題だけなのでなんとかなると思うのですか。。。
Open "C"は、MZ-2500と接続してデータのやりとりをした程度です。
やっぱりOpen "C"ではだめなのかなぁ。
モードさん曰く、「できるはずだ」の一言だったのですが(T_T)。
古籏一浩です。
At 18:25 97.6.5 -0000, G.Sakata wrote:
> 要するにQuickTimeを介せという事みたいです。
ということはQuickTime 2.1を調べるべきなのでしょうか?
(なんかもっと大変そうだなぁ(;_;))
FBII の CD-ROMにQuickTimeのサンプルはありますが・・・
MIDI機器があれば、そっちに出力するだけで入力は駄目かなと思いますけど・・・どうなんでしょう。
> MIDI機器の制御というかデータを送信するという事ですか?
簡単なエディターを作成したいと考えています。
市販のMIDIシーケンサーやライブラリアンなどでも可能だとは思いますが、ぜひ自分なりのものを作成したいのです。
私も試みたことがあります。
SMFをダイレクトに出力したりしてみましたが、はてさて(^^;
結局鳴りませんでした・・・
> Open "C"は、MZ-2500と接続してデータのやりとりをした程度です。
やっぱりOpen "C"ではだめなのかなぁ。
モードさん曰く、「できるはずだ」の一言だったのですが(T_T)。
できると思います。
が、なんか知らないけど、些細な部分ではまります。
READ #1,A$;0
とかではまってしまう事もありますし・・・
OPEN "C"のサンプルも欲しいですね。
と墓穴を掘りたくない(笑)
70人近くいるから、MIDIに接続して使っている人がいるかもしれないですヨ。
古籏一浩です。
At 12:23 97.6.4 +0000, 仙台7200/90 wrote:
おもいます。昨日,古籏さんのホームページを見せてもらいました。すごく詳しいですね。あまりの量に圧倒されてしまいました。初級編1から順に勉強していきます。
まだまだ量が少ないのと、期待に応えていない部分が多いので今後にでも期待してください(^^;
(技評)JavaScript本の山場は超えたので、ムービー編集してMacでゲームを作って、その後にページを更新します(おいおい^^;)
ところで,このページを印刷しようとすると,あちこちでホストスクリプトエラーが出てしまうのですが,これもFAQなのでしょうか。
このページというのは、私のFuture BASIC II-Jのどこでしょうか?
もしPostScript エラーのメッセージがわかるようであれば教えて下さい。Bounding Errorかな?
古籏さんのページは本にして売れるのではと思います。これほどの量の資料と教材を作って頂いて,広く公開されている姿勢には頭が垂れる思いです。重ねてお礼申し上げます。
本の元原稿はあるんですよ。
最初にインプレスに持っていったら駄目でした。
技評(技術評論社)も駄目みたいでf(^^;
★久々の発言の堀です。
また質問なのです(^_^;)。
相変わらず、PGで遊んでいるのですが、メニューからアップル標準のカラーピッカーを表示させて、色の変更をもくろんでいるのですが、うまく動きません(T^T)。
【やりたいこと】
PGで作ったメニューに表示させたカラー選択用のMDEFをクリックすることによって、ペンの色やテクストの色を変更したい。
【やってみたこと】
●.MAIN のなかの_MENUまたは_otherBeforeMenuの分岐からMOUSE(_lastMHorz)またはMOUSE(_releaseHorz)でクリックした位置を取り込んで、その位置のカラーをCALL GETPIXEL()で取り込もうとしたが失敗
↓
たぶん、_MENUまたは_otherBeforeMenuの分岐に入った時点では、PGによって自動的にメニューが閉じられており、クリックした位置のカラーが取り込めない。
●CD-ROM内のMDEFtester.BASを見てみて、それらしい関数を取り込んで使ってみたがやはりダメ。
↓
正確なことはわからないが、たぶん私の解析が足らない(笑)
★というところで悩んでます。
せっかくカラーメニューを選ぶとRGBの値が表示されているのに、それが使えないのは悔しいです(;_;)。
うまいカラーメニューの使い方を御存知の方はご教授下さいm(__)m。
★ちなみに、底値(?)のPerformer5430(80MB)を\225,000でゲットしました。
カミさん用のマシンになりそうです。私の(Quadra800+PPC601)よかたぶん2倍以上速いです・・・。
At 10:40 AM 97.6.8, 堀 浩一郎 wrote:
相変わらず、PGで遊んでいるのですが、メニューからアップル標準のカラーピッカーを表示させて、色の変更をもくろんでいるのですが、うまく動きません(T^T)。
【やりたいこと】
PGで作ったメニューに表示させたカラー選択用のMDEFをクリックすることによって、ペンの色やテクストの色を変更したい。
せっかくカラーメニューを選ぶとRGBの値が表示されているのに、それが使えないのは悔しいです(;_;)。
うまいカラーメニューの使い方を御存知の方はご教授下さいm(__)m。
これはですね、PG のマニュアルがひどく不親切な部分なんですが、いちおうは p87 に2行だけ解説がついているんですね。ここは何を言っているかといいますと、
ということを言わんとしているんですね。
- Colorメニュ−を使うときは、メニューアイテムを3つ作っておくこと。(名前は関係ないけど、上から Red, Green, Blue とでもしとけばいいでしょう)
- メニューが選択されると、選択された RGB 情報は、上記の3つのメニューアイテムに文字列として保存される。
結局、PG ではメニュー選択後には _menuAction(_menuLong) が発生しますので、ここで、Colorメニューが選ばれたことを確認したら次の処理をします。
という手順になります。すでにこちらで実験してますので確実です。4 の段階で、もともとのペンの色を確保しておいて、処理をしたらもとに戻しておくのが望ましいですね。
- 1.
- red$, green$, blue$ の3つのローカル変数を用意する。
- 2.
- 3つの情報は Colorメニューの3つのアイテムに上から入っているので、これを PG のグローバル関数 pGgetItemName$(menuID,itemID) (p212参照) でもって、それぞれローカル変数に格納。
- 3.
- 3つの文字列には (当然) 文字としての数字が入ってますので、これを VAL() で数字に変換します。
- 4.
- ToolBox の CALL RGBForeColor(RGBRecord) で、QuickDraw のペンに色をセットする。
- 5.
- 好きなように描画する。
- (例)
- いま、指定したい色は上記の処理により、 newRGBcolor というRGBcolorレコード型変数に入っているとする。
DIM oldRGB;RBGcolor, rect.8 CALL GETFORECOLOR(#@oldRGB) '"もとの色を保存。 CALL SETRGBFORECOLOR(newRGBcolor) CALL SETRECT(rect,0,0,20,20) CALL PAINTRECT(rect) CALL SETRGBFORECOLOR(oldRGB) '"もとの色に戻しておくこんな感じですね。
PG はこれみたいに、Resource を保存用に使用することが多々あります。PG のくせとして覚えておくといいかと。
必要なら、こちらでつくったサンプルをバイナリで送りましょうか?
★ちなみに、底値(?)のPerformer5430(80MB)を\225,000でゲットしました。カミさん用のマシンになりそうです。私の(Quadra800+PPC601)よかたぶん2倍以上速いです・・・。
いいですね...こっちは COLOR CLASSIC (68030/16MHZ) + 10MB ですから...
古籏さん,こんにちは。
ホームページは期待しております。
PSエラーに関しては,古旗さんのページに限らず,大きなテーブルがあるページで発生するようです。このことから,私の環境の問題なのでしょう。
古旗さんのページに問題が有るかのような失礼な事を言いました。
ごめんなさい。
実は,また助けてほしい事があるのですが,アドバイスしてもらえませんか。
古旗さんのページの初級編6のPICT印刷をしました。
ちゃんと印刷されるのですが,モノクロ画像の場合はいまひとつ綺麗に出ません。ハーフトーンスクリーンの線数が53本で,プリンタ初期値のようです。フォトショップなどでは,用紙設定でスクリーン線数の指定ができますよね。一見するとLW8のダイアログに見えるのですが,スクリーン線数を指定するにはどうすればいいのでしょうか。IMなどでPrint Managerの項を見ているのですが見つける事ができません。プログラムの参考書などを見てもQD出力の例ばかりで困っております。ご存じでしたら教えて頂けないでしょうか。
はじめまして、タオフィックです。
私は一ヶ月前から FB II を使いはじめました。
現在、PG でプロットするプログラムを書いています。しかし、以下のようにちょっと聞きたいことがあります。
プログラムの概要を説明します。
コッマ区切りのデータを読み込んで配列に入れます。
Plot ボタンを押せば、別の window で結果が表示されます。ここまでちゃんとできました。
しかし、どうすればこの window の内容を PICT として save できるのでしょうか。
マニュアルのどこの部分を読めばいいんですか。
分かる人がいれば、教えて下さい。
よろしくお願いします。
古籏一浩です。
At 11:29 97.6.9 +0000, 仙台7200/90 wrote:
PSエラーに関しては,古旗さんのページに限らず,大きなテーブルがあるページで発生するようです。このことから,私の環境の問題なのでしょう。
古旗さんのページに問題が有るかのような失礼な事を言いました。
ごめんなさい。
もしかして直接Netscapeから印刷していますか?
Netscapeだと、まっとうに印刷できない事が多いので・・・
JavaScriptで書き出された文字などは印刷できない場合がほとんどですしなかなかやっかいです。IE3を使うという方法もありますが、どうでしょう。
古旗さんのページの初級編6のPICT印刷をしました。
ちゃんと印刷されるのですが,モノクロ画像の場合はいまひとつ綺麗に出ません。
ハーフトーンスクリーンの線数が53本で,プリンタ初期値のようです。
フォトショップなどでは,用紙設定でスクリーン線数の指定ができますよね。
一見するとLW8のダイアログに見えるのですが,スクリーン線数を指定するにはどうすればいいのでしょうか。IMなどでPrint Managerの項を見ているのですが見つける事ができません。プログラムの参考書などを見てもQD出力の例ばかりで困っております。ご存じでしたら教えて頂けないでしょうか。
スクリーン線数は当然のことながらPostScriptプリンタでしか使えません。
53線という事は300dpiのプリンタでしょうか。
線数を指定するには(80線で角度23度、ドットスクリーン)
80 23 { 180 mul cos exch 180 mul cos add 2 div } setscreen
といった具合にPostScriptの命令を送ってあげます。
が、当然シリアルポートやEthernetで直接PSプリンタに送らないと無効になってしまいます。
が、実は裏技がありまして、PICT出力する場合にメタコメントを使用するとPICT形式内にダイレクトにPostScript命令を記述すると、それを送信してくれます。
昔使っただけなので困った事にメタコードを忘れてしまいましたf(-.-b
大昔のMac Japanで小池邦人さんが書いていたのですが、その号が見つからないので・・・
私はMZ-2500などからは直接PSに送信していましたがMacでは、まだやった事がありません。
ちなみにイラストレーター等で描いたものは画像1つずつに線数を設定する事もできます。
あとCOODINATE WINDOWだったかでもdpi指定ができたはずですが詳しくないので・・・
古籏さん,こんばんわ。
もしかして直接Netscapeから印刷していますか?
Netscapeだと、まっとうに印刷できない事が多いので・・・
うぅ,そうなんですか。
今はネスケで印刷できないページは,一度TEXTで保存後にクラリスワークスで加工してから印刷しています。
結構苦労するものですね。うちの環境の問題かと思っていたのですが,ネスケのせいなのですか。
実はちょっとお願いがあるのですが,古旗さんのページのToolBox一覧を自分で加工した帳票を愛用しているのですが,友人にも譲りたいのですが構わないでしょうか。
無制限に広がる危険はありませんので,許可を頂けると幸いなのですが。
線数を指定するには(80線で角度23度、ドットスクリーン)
80 23 { 180 mul cos exch 180 mul cos add 2 div } setscreen
といった具合にPostScriptの命令を送ってあげます。
が、当然シリアルポートやEthernetで直接PSプリンタに送らないと無効になってしまいます。
これは厳しいですね。PostScriptの命令を直接PSプリンタに送る方法が問題ですね。プリンタにPSデータを送るのはPSデータを文字列として印刷すればいいのでしょうか。何かエスケープシーケンスのようなものでPSデータである宣言が必要なのかなあ。PostScriptの本を買う必要がありそうですね。
私は用紙設定のダイアログでほいほいと設定できるものと思っていたのです。
PSデータを送るのが通常の印刷ではなく,通信になるのならプリンタの接続方法も取得してApple Talkかシリアルかなども気にかける必要があるのでしょうか。私のプリンタはEPSON LP9000PS2 なのでシリアル直結ができません。
実は裏技がありまして、PICT出力する場合にメタコメントを使用するとPICT形式内にダイレクトにPostScript命令を記述すると、それを送信してくれます。
すばらしい方法ですね。う〜ん,メタコマンドとはなんじゃろう。埋め込み命令のことなのでしょうか。この方法は何とかして解明したいですね。
私はまだ技量が足りませんが,自分なりに調べていきたいと思います。
あとCOODINATE WINDOWだったかでもdpi指定ができたはずですが
この方法は最近わかりました。始めは何のことやらだったのですが,CDの例題をしているうちに突然イメージが理解できた次第です。
でも,まだ応用まではできていません。
PGのバージョンが古くてサンプルが正常にコンパイルできない件ですが,待っていればモードさんから何らかのアップデータが送られてくるものなのでしょうか。ユーザー登録してからすでに半月ですが,Tool Kit買ってねのダイレクトメールしか来てないんですよ。ちょっと心配になってきました。
PGで生成されたソースって,ロジックがよくわからないですね。FB2を使っている方はPGを利用しているのでしょうか。私はちょっと自身ありません。プロジェクトマネージャで新規プロジェクトを選んだら雛型のソースが生成されますよね。このソースを無修正でコンパイルすると定数が宣言されてないと怒られてしまいます。この雛型はみなさん使っているのですか。最近PGの勉強を始めたので,急に混乱してきました。PGのソースが理解できるようになると楽しそうですね。でも難しそうなので素からしこしこと作っていこうと思っています。
古旗さんのページでもPGのソースの解説なんかして頂けると嬉しいです。
古籏一浩です。
At 19:07 97.6.9 +0000, 仙台7200/90 wrote:
結構苦労するものですね。うちの環境の問題かと思っていたのですが,ネスケのせいなのですか。
異なる機種やMac,Winなど結構うまく印刷できません。
画像が出力されないというのは結構あります。
実はちょっとお願いがあるのですが,古旗さんのページのToolBox一覧を自分で加工した帳票を愛用しているのですが,友人にも譲りたいのですが構わないでしょうか。
無制限に広がる危険はありませんので,許可を頂けると幸いなのですが。
別に無制限に広げても構いません。
どんどん配ってください。
PSデータを送るのが通常の印刷ではなく,通信になるのならプリンタの接続方法も取得してApple Talkかシリアルかなども気にかける必要があるのでしょうか。私のプリンタはEPSON LP9000PS2 なのでシリアル直結ができません。
RS232C、シリアル接続でなら割と簡単にいきますが・・・
そこで例のTOOL KITが必要なわけですか。
うちのはシリアルなんですけどね〜
すばらしい方法ですね。う〜ん,メタコマンドとはなんじゃろう。埋め込み命令のことなのでしょうか。この方法は何とかして解明したいですね。
私はまだ技量が足りませんが,自分なりに調べていきたいと思います。
HyperCardのXCMDで過去に一度作成したけですので忘れてしまいましたがpicCommentで80〜9Fまでの数値のどれかが、そうです(笑)
PGのバージョンが古くてサンプルが正常にコンパイルできない件ですが,待っていればモードさんから何らかのアップデータが送られてくるものなのでしょうか。ユーザー登録してからすでに半月ですが,Tool Kit買ってねのダイレクトメールしか来てないんですよ。ちょっと心配になってきました。
ちゃんとサポートしま〜す、と言っていたのでやるのではないでしょうかf(^^;
PGで生成されたソースって,ロジックがよくわからないですね。FB2を使っている方はPGを利用しているのでしょうか。私はちょっと自身ありません。
私はNo PGです(^^;
PGのページはベンさんが「超わかりやすく丁寧」に作成してくれるそうですから期待しましょう(^^)
<ベンさん>
>・Colorメニュ−を使うときは、メニューアイテムを3つ作っておくこと。(名前は関係ないけど、上から Red, Green, Blue とでもしとけばいいでしょう)
>・メニューが選択されると、選択された RGB 情報は、上記の3つのメニューアイテムに文字列として保存される。
■さっそくやってみたところ、うまく行きました(^o^)/。
ありがとうございました〜〜〜。
しかし、PGもFBもマニュアルの読みにくさにはいやになりますです(^_^;)。
同じところを3回以上は読まないと理解できない・・・。
ようやく日記アプリも、取り消しルーチンとファイルの自動保存の山を迎えております。あ、あと、グラフィックツールの充実もあるなぁ。
■どうもありがとうございましたぁ。またよろしくお願いしま〜〜す。
<古籏一浩さん>
> PGのページはベンさんが「超わかりやすく丁寧」に作成してくれるそうですから期待しましょう(^^)
■をを、ちょ〜〜〜期待してます(^o^)/
しかし、FBIIは面白いです。初めてシーケンサーをたちあげて、音源から音が出たときのあのわくわく感がよみがえります(笑)。
さかたです。
古籏さん、りぷらいありがとうございます。(_ _)
FBII の CD-ROMにQuickTimeのサンプルはありますが・・・
MIDI機器があれば、そっちに出力するだけで入力は駄目かなと思いますけど・・・どうなんでしょう。
CD-ROMも入手できましたので、あたってみます。(砕けるだろ〜けど・・・(^^;)
>やっぱりOpen "C"ではだめなのかなぁ。
>モードさん曰く、「できるはずだ」の一言だったのですが(T_T)。
できると思います。
が、なんか知らないけど、些細な部分ではまります。
READ #1,A$;0
とかではまってしまう事もありますし・・・
OPEN "C"のサンプルも欲しいですね。
と墓穴を掘りたくない(笑)
一応Open "C"の基本的な使い方についてはhandbookのserialというサンプルを参考にして、とりあえず動かせるようにはなりました。
ので、ボーレートなども正しく動いてるみたいです。
ちなみにオンラインマニュアルもハンドブックもMIDI機器は38400を指示していますが、MIDIは31250なので、これでは使えません。
ちなみに38400相手ならちゃんと使えますけど。。。
ちょっと関係ないけど、上記のサンプルはモデムとのやりとりを含んでいるので、ポケベルに送信して遊んでみました。(^^;
70人近くいるから、MIDIに接続して使っている人がいるかもしれないですヨ。
うっ、だれか〜!!
ベン/矢野 勉 です。
At 8:03 AM 97.6.11, 堀 浩一郎 wrote:
>> PGのページはベンさんが「超わかりやすく丁寧」に作成してくれるそうですから期待しましょう(^^)
■をを、ちょ〜〜〜期待してます(^o^)/
うう〜む、「ちょーわかりやすく丁寧」にですか... いちおう分かりやすくなるように努力はしているのですが、なにぶん、どうも難しく書いてしまうくせがあるようで、なかなか難しい。今は PG の吐き出すソースコードの構造についての概要を書いてますが、なかなか説明しずらいですね。わかっている方にとってはあたりまえな構造なので...(^^;)
ほんとは、最初のサンプルプログラムである PG Text の解説まで書いてしまってから公開しようかと思ってましたが、どうもスケジュールが送れているので(ううむ、コンピュータ業界ではよくあること(笑))、概要ができた段階でいったん公開しますね。書くペースが遅いので、更新がひじょうにゆっくりになる可能性もありますが、気長におつきあいください。まあ、MacOS も Raphsody と並列して継続発展するようですし、FB も殺されずにすみそうですし(^^;)
#そおいや、この ColorClassic がちょうど5年目だなあ
At 0:33 AM 97.6.4, 竹内亨 wrote:
ハンドルへすこしずつ(255文字ずつ)付け足していく方法がわかりません。
思いとしては、ループの中で、出てきた値を、一旦文字列変数へいれそれをハンドルへ付け足すという繰り返しにしたいのですが、その仕方がわかりません。
osErr% = FN HANDANDHAND([hndl&],strPtr&) を使うのかなと思い実験したのですが、うまくいきません。
osErr% = FN HANDANDHAND([hndl&],strPtr&)
これ、引数がまちがってますよ。Handbook の p263 には
osErr% = FN HANDANDHAND(hndl&, hndl2&)
と書かれています。ハンドルとハンドルをくっつけるものであって、ポインタとポインタをくっつけるものではないので、引数がハンドルなのはあたりまえ。上記の誤った記述のほうでは、どちらもポインタを渡してますね。
ついでに、文字列へのポインタをハンドルに連結するなら、HandAndHand は使えませんね。文字列へのポインタは (その名のとおり) ポインタであって、ハンドルではありませんから。ハンドルってのは、Mac のプログラムでは NewHandle によって以外は作れませんので、文字列をハンドルにしたりもできませんし。
ではどうするかといいますと、BLOCKMOVE を使います。ポインタからポインタへのコピーを行うステートメントなんですが、ハンドルってのは要するに「ポインタのポインタ」なので、ハンドルの指す先にはポインタがあります。(これをマスターポインタといいます。マスターポインタの先には、NewHandle で実際に確保されたメモリブロックがあるというわけ)
[hndl&]
これだけでマスタポインタを取り出せるので、簡単にコピーができます。しかし、コピーするにも、ハンドルのサイズは決まっているので、これ以上コピーすると、ハンドルのサイズを超えてしまいます。で、そのためにハンドルのサイズを変える (追加分だけ大きくする) 必要があります。これには
osErr% = FN SETHANDLESIZE(hndl&, size&)
という ToolBox を使います。hndl& に問題のハンドル自体を、size& には、新しい総サイズを入れます。ハンドルのサイズは GetHandleSize() にて得られますし、文字列の長さは FB の LEN() で得られるので:
---------------------------------------------- DIM strSize, hSize&, err strSize = LEN(theString$) hSize& = FN GETHANDLESIZE(strHandle&) err = FN SETHANDLESIZE(strHandle&, hSize&+strSize) LONG IF err = _noErr err = FN HLOCK(strHandle&) '"strHandle& の最後に、文字列の内容をコピーする。 BLOCKMOVE @theString$+1, [strHandle&]+hSize&, strSize '" ^^^^^^^^^^^^^^^^^^^ '" ここでハンドルのさすメモリブロックの (サイズ変更前の) '" 最後の番地を指定しているわけ。先頭の番地にハンドルの '" 元のサイズ分足してやれば、最後の部分をさすことになりますね。 err = FN HUNLOCK(strhandle&) END IF ----------------------------------------------これで theString$ のサイズ分だけ strHandle& のサイズを大きくして、そこに theString$ の内容をコピーできます。
しかしですね、これって、「xCmdPtr& から得られる、引数のハンドルをそのまま処理する方法がわからないから、文字列として得たのを処理する」ためにしているんですよね、たしか。これって、FN HLOCK(hndl&) で、取り出したハンドルをいったんロックしてマスターポインタを ptr& = [hndl&]で取り出し、char = peek(ptr& + charNum) (charNum は何文字目か。0から始まる)でもって、ポインタから1バイトとりだすと、アスキーコードが得られるんで、それで処理するわけにはいきませんか?(そっちのほうが処理速度も圧倒的に速いはず)
特殊コードなら「リターン=13」って感じで決まってますし、ASC("a") とかで簡単にアスキーコードも分かりますけど。例として、ハンドルに収められた文字列のうち、小文字の "a" が何個あるかを調べるコードを書いておきます。
---------------------------------------------- strH& は文字列の入ったハンドルとする。 CLEAR LOCAL FN GetNumOfa&(strH&) DIM result&, hsize&, strPtr&, i, char DIM asciia asciia = ASC("a") strPtr& = FN GETHANDLESIZE(strH&) err = FN HLOCK(strH&) strPtr& = [strH&] FOR i = 0 TO hsize& - 1 char = PEEK(strPtr& + i) LONG IF char = asciia result& = result& + 1 END IF NEXT i END FN = result& ---------------------------------------------こんなとこですけど。参考になればいいですが...
6月10日に発売されたマッキントッシュ・デベロッパーズ・ジャーナルNO.25ですが、冨山 学さんの“かんたんFutureBASIC II”が載っていませんでした。あれ?連載の筈だったんだけど……(^_^;)今号はお休みなんでしょうか。なにぶん立ち読みだったんで詳しくは分かりません。店頭でちょっとめくって、冨山さんの連載が載っていなかったから買わなかったんです。
他の雑誌での連載って、最近チェックするのを忘れてるんでどうなっているのかは分かりません。Mac Fanとかベーマガとか……。マッキントッシュ・デベロッパーズ・ジャーナル(略してデベジャ)は隔月刊なので、連載の進み具合が遅くって困ります。冨山さんの連載なら、MacPowerでやると思ったんですけど、そうじゃないみたいですね。デベジャの連載第一回の内容も、昔、MacPowerに載っていたままの内容ですし。
僕のFB IIの学習状況ですが、まだ「ボール拾い」のロジックを追ってたりします(^_^;)前に、ソースコード通りに入力したのに実行できなかったボール拾いですが、FB IIが2.3になってからは、ちゃんと動くようになりました。もう、メモリ関連の事が全然分からないんで、プログラムは動いても、どう動いているのか理解できずに、そこで止まってます。古籏さんのFutureBASIC II-J HomePageのサンプルも同時に勉強しています。古籏さんにお願いなんですが、FutureBASIC初級編に、メモリの事(なぜ必要なのかとか、どういった命令があってどういう時に使うか等)を解説したページを作っていただけないでしょうか。
昔からBASICに慣れ親しんでいた人はメモリ等、ハードウェア寄りの事は機種が変わっても応用が利くと思いますが、プログラミングはFBが初めて、という人はメモリの話ってすんなり理解するものなのでしょうか?単に僕だけかも知れませんが(^_^;)
矢野 勉 / ベンさん、詳しい解説ありがとうございました。
さっそく実験させていただきます。
BLOCKMOVEはこう使うものだったのですね。
やみくもに実験しては、失敗の連続だったので、すっかり煮詰まっていました。。。
とにかくありがとうございます。
いつも、申し訳ありません。
はやく一人前に使えるようにがんばります。
>例として、ハンドルに収められた文字列のうち、小文字の "a" が何個あるかを調べるコードを書いておきます。
も検討させていただきます。
高速に検索できるのなら、シンプルになるなら、がんばって理解します。
(ただ、HyperCardに検索された文字列の範囲をすべてリストにして返り値にしたいので、常に255文字以上が返り値になる可能性がありBLOCKMOVEを使う必要がある。と思う。。。)
ベン/矢野 勉 です。
ああっ、すみません。前に挙げた a が何文字あるか調べる関数ですが、一部間違ってました。(ロックしたハンドルを、ほったらかしにしていた(^^;) ありがちな) おまけでコメントを付けてみました。
---------------------------------------------- strH& は文字列の入ったハンドルとする。 CLEAR LOCAL FN GetNumOfa&(strH&) DIM result&, hsize&, strPtr&, i, char DIM asciia asciia = ASC("a") '"先に a のアスキーコードを得ておく '"ハンドルの指すメモリブロックの大きさを '"得る。メモリのバイト数はそのまま文字数にあたる。 '"(1文字=1バイト) strPtr& = FN GETHANDLESIZE(strH&) err = FN HLOCK(strH&) '"ハンドルをロック strPtr& = [strH&] '"マスタポインタの取り出し '"マスタポインタの頭から1バイト取り出し、 '" a の ASCII コードと比較する。 '"一致すれば result& を1増やす。 '"サイズ分だけ、1バイトずつ調べる。 '"(現在何文字目かは i で分かる) FOR i = 0 TO hsize& - 1 char = PEEK(strPtr& + i) '"1バイト読み込み LONG IF char = asciia '"aと比較/真なら result& = result& + 1 '"結果に1たす。 END IF NEXT i err = FN HUNLOCK(strH&) '"処理がすんだらロック解除 END FN = result& ---------------------------------------------
矢野 勉 / ベンさん、重ね重ね詳しい解説ありがとうございました。
これから研究していきたいと思います。
FutureBASIC IIに慣れてきたら、すこしづつ大きいプログラムにも挑戦したいと思います。
また、なにかと質問することになるかもしれませんがその時はよろしくお願いいたします。
でも、これだけ教えてもらえたのできっと最後までできるようにがんばります。
古籏一浩です。
ちょっとページの大移動をしてまして、FB−MLがご無沙汰(^^;
At 15:06 97.6.12 +0900, Hiroki Kaneko wrote:
6月10日に発売されたマッキントッシュ・デベロッパーズ・ジャーナルNO.25ですが、冨山 学さんの“かんたんFutureBASIC II”が載っていませんでした。
あれ?連載の筈だったんだけど……(^_^;)今号はお休みなんでしょうか。なにぶん立ち読みだったんで詳しくは分かりません。店頭でちょっとめくって、冨山さんの連載が載っていなかったから買わなかったんです。
本当に載ってませんね。
Mac Powerを読むとFile Maker Proの本を出すので、それに追われている感じですが・・・
ホームページも更新されてないし・・・
で、私のFBのページ実は移動中です。
今までは
http://www.shiojiri.ne.jp/~openspc3/
だったのが、今度は
http://www.shiojiri.ne.jp/~openspc/FB/
になってます。旧の方には、まだお知らせしてないので変更しないと・・・
メモリ関連の事が全然分からないんで、プログラムは動いても、どう動いているのか理解できずに、そこで止まってます。古籏さんのFutureBASIC II-J HomePageのサンプルも同時に勉強しています。古籏さんにお願いなんですが、FutureBASIC初級編に、メモリの事(なぜ必要なのかとか、どういった命令があってどういう時に使うか等)を解説したページを作っていただけないでしょうか。
昔からBASICに慣れ親しんでいた人はメモリ等、ハードウェア寄りの事は機種が変わっても応用が利くと思いますが、プログラミングはFBが初めて、という人はメモリの話ってすんなり理解するものなのでしょうか?単に僕だけかも知れませんが(^_^;)
昔のBASICは全部自動的にやってくれましたからね〜
FBだと全部というほど自前でやらないと・・・
やっぱり「ポインタ」と「ハンドル」は初級編10とか作って説明した方がいいでしょうか?
Rhapsodyになると、また新しいメモリ云々とかでたりして。
「ハンドル」に「サドル」に「ペダル」とか(^^;
古籏一浩です。
POP ERRORか何かで同じメールが2度送られてしまったみたいですf(^^;
初級編9を追加しました。
まずはメモリの用語とポインタ、ハンドルの簡単な説明を載せておきました。初級編なので、あんまり深入りはなし、です。
初級編10は実際にメモリを確保して読み出し、書き込みをするつもりです。
>みなさん
いつもお世話になっております。実は最近,キューティ・マスコットで利用されているような,透明ウインドウを利用したいと考えているのですが,IMを読んでもどうすればいいのかわからず困っております。
NEWCWINDOWでどのような指定をすればいいのかご存じの方いらっしゃいましたらアドバイスしていただけませんでしょうか。
最近メモリが安くなってますね。衝動買いしそうになります。困ったもんだ(^^;)
古籏一浩です。
At 17:46 97.6.20 +0000, 仙台7200/90 wrote:
いつもお世話になっております。実は最近,キューティ・マスコットで利用されているような,透明ウインドウを利用したいと考えているのですが,IMを読んでもどうすればいいのかわからず困っております。
不定形のはなんかリソースで定義できるのがあったような気がするんですが。
WDEFでしたっけ?
一度もやった事がないので・・・
たしかDirectorでもへんてこりんな形のができますからリソースとかでできると思いますが。
と書いて誰かにタッチ(笑)
やっぱり「ポインタ」と「ハンドル」は初級編10とか作って説明した方がいいでしょうか?
お願いします。グローバル変数でも、HyperTalkでのグローバル変数くらいしか知らないもんで(^_^;)メモリがどうこう、と言われると戸惑ってしまいます。
多分、FutureBASICの初心者って、僕みたいにHyperTalkくらいしか言語をいじった事がない人って結構居ると思うんです。そうなると、メモリの事については前知識が無いので、解説していただけると嬉しいです。早速「プログラム講座 初級編9」も読ませていただきました。「初級編10」でも解説して下さるそうなので、期待しています。まだ、実際にどういう時にメモリを使えばいいのか(使わなければならないのか)が思いつかないので、次は、実際にプログラムリストで解説して下さると参考になると思います。
古籏さん,いつもありがとうございます。
不定形のはなんかリソースで定義できるのがあったような...
不定形のウインドウなんて作れるのですか。しりませんでした。
私は画面全体を覆う透明な四角いウインドウがあれば,ディスクトップ上で,グラフィックを動かせて楽しいのではと考えていたのです。
ですから,普通のウインドウ定義をするときに,背景色を透明にする指定だけでいいと思っていたのです。そうは言っても透明指定ってどうするのかわからないのですが(^^;)
リソースで不定形のウインドウが作れるなんてすごいですね。
なんかいろいろと応用できそうな気がします。
でも,こんなトリッキーなことってどうやって調べればいいのでしょうか。
知ってる人だけ知っているという世界かなぁ。
今はPGが生成したソースを一生懸命おいかけています。これをしっかりしとかないと,わかりませんという質問すらできませんので(^^;)
それにしても,もうちょっとコメントを入れて欲しいものですね。
PGのハンドブックは読んでいて心もとなくなってきますし...
グローバル変数の数が多すぎて理解できないという寂しい状況です。
この土日でがんばりますので,また報告したいと思います。
古籏さん,弘樹さん,横から割り込んですいません。
私もメモリについて知りたいことがあります。
私の場合は他の言語をしていましたので,「ポインタ」と「ハンドル」はおぼろげながら理解しているつもりです。しかし,FB2での書き方といいますか記述の決まりや応用の仕方については興味があります。ぜひ初級編10でお願いしたいと思います。
メモリに関してですが,Appleが定義しているシステムグローバルの構造体を取得しようと思い,同じ構造体をFB2のグローバルで定義しました。ADBマネージャーの構造体なので,GetADBInfoでポインタを取得して読み込んでみました。とりあえずうまくできたかなと思っているのですが,ポインタではなくハンドルを取ってこなくてもいいのでしょうか。プログラムの本などではメモリは再配置されるのでハンドルを使うようにと書かれています。
システムグローバルを取得するときには,ポインタでいいのかなぁ。なんかよくわからなくなってきました。とりあえず動いているしまぁいいかぁf(^^)...
古籏一浩です。
At 9:37 97.6.21 +0900, Hiroki Kaneko wrote:
お願いします。グローバル変数でも、HyperTalkでのグローバル変数くらいしか知らないもんで(^_^;)メモリがどうこう、と言われると戸惑ってしまいます。
HyperCardではメモリは出てきませんからね。
FBだと自分で確保して自分では期しなければ行けないのでミスをすると簡単にシステムエラーになってしまいます。
「プログラム講座 初級編9」も読ませていただきました。「初級編10」でも解説して下さるそうなので、期待しています。まだ、実際にどういう時にメモリを使えばいいのか(使わなければならないのか)が思いつかないので、次は、実際にプログラムリストで解説して下さると参考になると思います。
初級編10では最もよく使われる「ハンドル」を解説します。
水曜日くらいにはアップできると思います。
でも、あんまり期待しては駄目ですf(^^;
というか、面倒な部分は初級編ではなくて中級編か、上級編でやりたいなと思っていますので。この後、ハンドルとメモリがわかれば日本語関数の作成と説明をしても大丈夫かなとふんでいます。
At 1:12 PM 97.6.21, KaZuhiro FuRuhata wrote:
初級編10では最もよく使われる「ハンドル」を解説します。
水曜日くらいにはアップできると思います。
おおっ、はやいっ。はやすぎるっ
ぼくは最近は仕事から帰ると疲れ果てて、とりあえず NIFTY の未読と、メールの確認をして、風呂はいって、寝る、という生活をつづけていまして、ホームページのほうはでんでんすすまない(^^;)
ああ、ごめんなさい(^^;)
ここにかきこむのもなかなかできないという...
でもがむばります。
ハンドルというか、いわゆる「メモリブロック」ですが、グローバル変数との対比よりも、むしろローカル変数と対比すべきものな気がします。まあ、グローバル変数でもそうなんですが、特にローカル変数は「コンパイラが一時的に確保する、情報保管場所」という感がつよいので、「自前で確保して、自前で破棄するまでメモリ内の一部分を占拠しつづける情報保管場所」であるハンドル等とは対局にある気がする。
「メモリの一部を占拠しつづける」というのが重要なんですね。ただ占拠している場所の場所(つまりメモリ番地・アドレス)をローカル変数かグローバル変数にとっておかないと、場所がわかんないんで、破棄することもできず、その領域は意味もなくそこに残るわけ。このへんが重要ですね。
古旗さんのページはひさしく見にいっていないので、これから見に行こうと思います。
ベン/ 矢野勉 です。
不定形のウインドウなんて作れるのですか。しりませんでした。
私は画面全体を覆う透明な四角いウインドウがあれば,ディスクトップ上で,グラフィックを動かせて楽しいのではと考えていたのです。
ですから,普通のウインドウ定義をするときに,背景色を透明にする指定だけでいいと思っていたのです。そうは言っても透明指定ってどうするのかわからないのですが(^^;)
透明のウインドウってのは僕も聞いたことありませんねえ。思うに、ToolBox の NewCPort で新しいカラー描画環境を作っているんでは。NewCWindow も内部ではこれを読んでいるので、それを自前でやるというわけです。一度だけやったことがあるんですが (古旗さん、キャプチャのやつですよ) 、いまいち良く分からないままやってたんで(^^;)、未だによくわかってない(^^;) どうも NewCPort で確保した GrafPortレコードの各フィールドを自分で埋めていく必要があるようです。GrafPort については FB のマニュアルにもでてますが、そのへんの ToolBox 解説書にも (なにしろ描画環境なんで) たいがい出ています。 GrafPort は初期は透明ですからね。スクリーンサイズで作ってやればいいんじゃないかと。
リソースで不定形のウインドウが作れるなんてすごいですね。
なんかいろいろと応用できそうな気がします。
でも,こんなトリッキーなことってどうやって調べればいいのでしょうか。
知ってる人だけ知っているという世界かなぁ。
いや、じつはその名も「コードリソース」という本がありまして、そこには WDEF(ウインドウ定義関数) の作り方もかいてます。WDEF, MDEF, LDEF なんかの「コードリソース」は、使えると結構おもしろいです。要は、システムから「タイトルバーを描け」「クローズボックスを描け」というイベントがくるので、それに合わせて QuickDraw で描画していくのです。そのときに、三角とか丸、もっと変な形にウインドウを作れば、以降は NewCWindow 一発でいくらでも作れるのです。
「リソース」ってマックでもかなり面白い上に、マックの優れたところの一つでもありますので (なにしろ、実行コードまで CODE リソースとして持っているのがマックのアプリですから)、Raphsody でリソースの概念が消えそうなのがちょっと残念(まだわかんないけどね。)
NeXT ではアプリの実体は、マックでいう「フォルダ」そのものでして、普通のフォルダとの違いは .app という拡張子が付いているだけ。
フォルダ内に実行コードと、各種リソースが入ってんですが、これじゃアプリしかリソースを持てないんですよね。おまけに拡張子なんてださいものを使うのはやめてほしいもんだ。(退化でんがな)
NeXTはあこがれだったけど(いまでもプログラム面ではあこがれているけど)、ユーザーインターフェイスではなんだかなー、とか思っている今日このごろ。マックから進化した Advanced User-Interface とやらにちょっとだけ期待しよう。(たのむから拡張子だけは消してほしいなあ。フルパス名とか使ったらもっといや)
あー、なんか独り言のようなポストになってしまった(^^;)
はじめまして.
最近FutureBASICを勉強し始めた川野と申します.以前はQuick Basicを使っておりました.
実はEXCELなどの表計算アプリケーションからクリップボードを経由して数値を得て,それをFuture Basicで作ったプログラムで計算に使い,その結果をクリップボード経由で表計算アプリケーションに返すということを考えています.
Quick Basicであれば,
OPEN "CLIP:" FOR INPUT AS #1 i=1 WHILE NOT EOF(1) INPUT #1, XDATA$(i),XDATA$(i+1),XDATA$(i+2) i=i+3 WEND CLOSE #1などとすれば3列に並んでいる数値(後で文字列は数値に変換する)を読み込むことができます.
Future Basicではどのようにすれば数値データを得ることができるのでしょうか? ハンドブックにあるサンプルではクリップボードの画像やテキストを読み書きする方法は紹介されていますが,数値のやり取りは紹介されていないようです.
なにかよい方法があればご教示ください.または,参考になるプログラムを紹介していただけるだけでも結構です.
よろしく御願いいたします.
古籏一浩です。
At 21:09 97.6.22 +0900, Yoshinobu KAWANO wrote:
などとすれば3列に並んでいる数値(後で文字列は数値に変換する)を読み込むことができます.Future Basicではどのようにすれば数値データを得ることができるのでしょうか? ハンドブックにあるサンプルではクリップボードの画像やテキストを読み書きする方法は紹介されていますが,数値のやり取りは紹介されていないようです
ここらへんは、どう見てもQuickBASICの方が楽ですねf(-.-b
エクセルから数値データをコピーした場合でも、それらは「テキスト」として保存され数値にはなりません。
つまりクリップボードからテキストを読み込み、数値に変換するといった具合にしないと駄目です。
一応私のページにEXCEL -> Future BASICのクリップボード経由でのやりとりを載せておきました。参考にしてくださいませ。
古籏一浩です。
At 23:26 97.6.21 +0900, Tsutomu YANO wrote:
> 水曜日くらいにはアップできると思います。
おおっ、はやいっ。はやすぎるっ
ぼくは最近は仕事から帰ると疲れ果てて、とりあえず NIFTY の未読と、メールの確認をして、風呂はいって、寝る、という生活をつづけていまして、ホームページのほうはでんでんすすまない(^^;)
速いといっているうちに、中級編10までアップロードしてしまいました。
あさってには初級編10のアップ予定です。
プログラムあれど、解説が面倒という毎度のオチで・・・
早くPGのページを作ってくださいな。
古籏一浩です。
At 12:59 97.6.21 +0000, 仙台7200/90 wrote:
私の場合は他の言語をしていましたので,「ポインタ」と「ハンドル」はおぼろげながら理解しているつもりです。しかし,FB2での書き方といいますか記述の決まりや応用の仕方については興味があります。ぜひ初級編10でお願いしたいと思います。
初級編10では最低限の解説だけです。
そうしないと中級編になってしまいますf(^^;
ハンドル確保、ハンドルロック、メモリ内容操作、ハンドルロック解除、破棄といった手順を守れば大丈夫です。
ただメモリは結構自己管理なので、うまくやらないとシステムエラーの嵐と原因不明でプログラムが正常に動作しない、というオチがあります(^^b
メモリは再配置されるのでハンドルを使うようにと書かれています。
システムグローバルを取得するときには,ポインタでいいのかなぁ。なんかよくわからなくなってきました。とりあえず動いているしまぁいいかぁf(^^)...
メモリの存在しない場所をアクセスしている間は、正常に動作しているように見えてしまうので、かなり危険です。
特にポインタとハンドルを間違えるとシステムエラーとかが発生したり他のアプリの動作がおかしくなったりします。
ハンドルの所はちゃんとハンドルでないと駄目です。
#getADBInfoは昔やったけど、よく理解していなくて挫折しました(笑)
At 2:26 PM +0900 97.6.23, KaZuhiro FuRuhata wrote:
古籏一浩 です。
At 21:09 97.6.22 +0900, Yoshinobu KAWANO wrote:
>などとすれば3列に並んでいる数値(後で文字列は数値に変換する)を読み込むことができます.Future Basicではどのようにすれば数値データを得ることができるのでしょうか? ハンドブックにあるサンプルではクリップボードの画像やテキストを読み書きする方法は紹介されていますが,数値のやり取りは紹介されていないようです
ここらへんは、どう見てもQuickBASICの方が楽ですねf(-.-b
エクセルから数値データをコピーした場合でも、それらは「テキスト」として保存され数値にはなりません。
つまりクリップボードからテキストを読み込み、数値に変換するといった具合にしないと駄目です。
一応私のページにEXCEL -> Future BASICのクリップボード経由でのやりとりを載せておきました。参考にしてくださいませ。
どうもありがとうございました.わたしもテキストから数値に変換する以外に方法はないと思っておりました.でも,ハンドル内にあるテキストから数値をひとつづつ切り出す方法がわからず,一度ファイルとして保存して,それからLINE INPUT#で1行づつ読み込み数値に変換すると言う方法を考えておりましたが,古籏さんの方法が圧倒的に優れています.参考にさせていただきます.
これからも有益な情報を期待しております.
ベンさん,いつもありがとうございます。
どうも NewCPort で確保した GrafPortレコードの各フィールドを自分で埋めていく必要があるようです。
そうなのですか,もういちどIMをごりごりと読んでみます。なんか,イメージ的にかなり難しい感じを受けますが,挫折するまではしつこく挑戦してみます。
「コードリソース」という本がありまして...
この本は近所の本屋においてありましたので,早速購入してみます。
今までは,WDEF, MDEF, LDEF などの作り方がよくわからなくて自分のアイデアを実現するのが難しかったのですが,楽しみができました。
次のOSではリソースが無くなってしまうのですか。せっかく最近リソースについてわかってきたのに残念です。ぜんぜん違う環境になってしまうのは寂しいですね。
今は,PGの生成するコードを追いかけているのですが,なかなかにてこずります。困っているのは,デバッガを使ってトレースしようとすると,インクルードファイルが大きすぎてコンパイルできないとメッセージを頂いてしまうことです。みなさんはPGを使っているのでしょうか。私は始めの頃は,PGを使えば早いのだろうなと思っていたのですが,どこで何をしているのか理解できないので使いづらいことこの上ないです。とりあえずランタイムの部分だけでも理解できればいいのですが。
古籏一浩です。
At 9:15 97.6.24 +0900, Yoshinobu KAWANO wrote:
どうもありがとうございました.わたしもテキストから数値に変換する以外に方法はないと思っておりました.でも,ハンドル内にあるテキストから数値をひとつづつ切り出す方法がわからず,一度ファイルとして保存して,それからLINE INPUT#で1行づつ読み込み数値に変換すると言う方法を考えておりましたが,古籏さんの方法が圧倒的に優れています.参考にさせていただきます.
お役に立てて幸いです。
テキストまわりは、次回のハンドル&メモリの確保の後にいろいろやろうと思っています。まずは簡単な日本語の文字列長を求めるものからやろうと考えています。でも、あんまり期待しては駄目です。
どんどん講座が増えてきて、もう20超えてますね。
本人のレベルが低いので高度なものはパスですf(^^;
#このFB-MLでpowerPC604を搭載したMac持っている人いますか?
#いたらゲームでもどうぞ(^^)
http://www.shiojiri.ne.jp/~openspc/download/meda.sea
ジョイスティック(GAME MAC)かテンキーの2468、IJLM,で上下左右、シフト、スペースキーでショットです。フルカラーモードで動作します。まあ、白黒でも動作しますけど。
失礼しました。
「初級編10」は「初級編9」のまちがいでした。。。
訂正いたします。
古籏一浩です(^^)
初級編10を追加しました。
簡単なメモリの確保、読み出し、破棄のサンプルと解説です。
こんなんでわかります?
#なんかもう80人超えてしまいました、このML
初級編10を拝見しました。メモリの操作の仕方は(なんとなく(^_^;))分かりましたが、どんな時にメモリを、どのくらい確保すればいいのかが未だに分かりません。例えばMacintosh Developer's Journalで冨山さんが書いていたサンプルプログラムにも、DIMを使ったメモリの確保がありましたが、僕はそれを見ても「そんな事しなくてもウィンドウの大きさなら直接WINDOW文に書き入れればいいじゃないか」と思ってしまいます。ですから
DIM myRect.8
CALL SETRECT(myRect,0,0,300,200)
WINDOW #1,"Sample 1",@myRect,_docZoom+_noGoAway
よりも
WINDOW #1,"Sample 1",(0,0)-(300,200),_docZoom+_noGoAway
に、どうしてしないんだと思ってしまいます。これはFB IIがどのようなものかのサンプルなので、わざとDIMを使ってメモリを確保してみた、と言われればそれまでですが、メモリの確保をどういう時に使えばいいのかが分からないままなので、メモリの確保を使わなくてもいい所に使っているという事を、不自然に感じてしまいます。FB IIのスタートアップマニュアルの後ろの方に「メモリ・マネージャについて」という章がありますが、これもメモリの操作だけのサンプルなので、実際のアプリケーションで、どう使われているのかが分かりません。同じくスタートアップマニュアルに、PICTを表示して、それに顔のマークをスタンプするサンプルプログラムがありますが、この中でのメモリの操作の部分は、FB IIの「関数ライブラリー・ヘルプ」にあらかじめ登録されているサンプルをコピーするだけで、動作に関する詳しい解説はありませんでした。僕はどうやって勉強すればいいのでしょうか(^_^;)
- P.S.
- FB-MLも600通を超えたことですし、そろそろメールを100通づつに分けて古籏さんのFutureBASIC II-J HomePageに掲載してもらえないでしょうか。それともメールの内容は書いた人に著作権があるから配布できないんですか?詳しく知らないので、その辺も教えていただけると幸いです。
川野@佐賀大学です.
先日古籏さんからクリップボードを介した数値データの取得方法を教えていただきました.また,Future Basic II講座でも中級編に紹介がありました.そこで,教えていただいた通りに自分のプログラムに組み込んでみたのですが数値データが得られません.詳しく言うと,得られたデータをグローバル変数にそれぞれ格納して,他のLOCAL FN に持っていって計算処理をしようとしていますが,他のLOCAL FN に持っていった段階で,数値が格納されているはずのグローバル変数の中は空っぽになってしまいます.LOCAL FN間同志のデータの交換はプログラムの他の部分では問題なく行われています.クリップボードから読み込むこのLOCAL FNを経る場合だけ空っぽになるのです.メモリ確保の段階で失敗しているのではないかとプログラム全体をチェックしましたがどうもそうではないらしいです.昨日,今日とずっと取り組んでおりますが,どうしても原因がわかりません.
恐縮ですが,考えられそうな原因がありましたら教えていただけないでしょうか.たびたび申し訳ありませんがよろしくお願いいたします.
古籏一浩です。
At 19:40 97.6.25 +0900, Hiroki Kaneko wrote:
> 初級編10を拝見しました。メモリの操作の仕方は(なんとなく(^_^;))分かりましたが、どんな時にメモリを、どのくらい確保すればいいのかが未だに分かりません。
初級編11を追加しましたので、11では実際にどのくらい確保しているかわかると思います。処理はシンプルな行数を数えるだけのものです。
>WINDOW #1,"Sample 1",(0,0)-(300,200),_docZoom+_noGoAway
>
> に、どうしてしないんだと思ってしまいます。
自分だけしか使わない短いプログラムなら、これでいいと思います。
が、中規模のプログラムを作成すると上記の方法では、やはりよくないと言えます。ここらへんは、やはり体験して覚える方がよいのかもしれません。
>これはFB IIがどのようなものかのサンプルなので、わざとDIMを使ってメモリを確保してみた、と言われればそれまでですが、メモリの確保をどういう時に使えばいいのかが分からないままなので、メモリの確保を使わなくてもいい所に使っているという事を、不自然に感じてしまいます。
あまり実用的な例じゃないと、なおさらそう感じると思います。
私もそう思う1人ですf(^^;
>P.S.FB-MLも600通を超えたことですし、そろそろメールを100通づつに分けて古籏さんのFutureBASIC II-J HomePageに掲載してもらえないでしょうか。それともメールの内容は書いた人に著作権があるから配布できないんですか?詳しく知らないので、その辺も教えていただけると幸いです。
じつはHTML化の最中なんです。
ただ、意味のない管理者メールなどは削除したりしているので時間がかかってます。
7月20日頃にはfb-ml640まではページ上に用意できると思います。
本当はジャンル別?に分けたいのですが、ちょっと作業量が膨大になりそうなのでf(^^;
#実際は640通もメールはなくて250通くらいです。
#途中でカウンタ飛ばしたので(^^;
古籏一浩です。
At 19:54 97.6.25 +0900, Yoshinobu KAWANO wrote:
>間同志のデータの交換はプログラムの他の部分では問題なく行われています.クリップボードから読み込むこのLOCAL FNを経る場合だけ空っぽになるのです.メモリ確保の段階で失敗しているのではないかとプログラム全体をチェックしましたがどうもそうではないらしいです.昨日,今日とずっと取り組んでおりますが,どうしても原因がわかりません.
これは、プログラムをみないとわかりません。
変数の名前の間違い、型の違いも可能性があります。
「もう〜わからん」という場合は怪しい部分のリストをMLに流してみると誰かが答えてくれると思いますよ。