■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#418-0コールバックとは・・・。Ky2001-07-19(木) 10:30
     #422-0RE#418:コールバックとは・・・。ろってんまいあ2001-07-19(木) 13:44
     #425-1RE#422:コールバックとは・・・。匿名4252001-07-19(木) 14:32
     #428-1RE#425:コールバックとは・・・。トモ@あゆあゆ2001-07-19(木) 14:43
     #429-1RE#418:コールバックとは・・・。せつら2001-07-19(木) 15:36
     #430-0RE#425:コールバックとは・・・。せつら2001-07-19(木) 16:19
     #433-1RE#430:コールバックとは・・・。匿名4332001-07-20(金) 00:18
     #434-1RE#433:コールバックとは・・・。藤代千尋2001-07-20(金) 01:10
     #436-1RE#433:コールバックとは・・・。よねKEN2001-07-20(金) 09:03
#418-0
コールバックとは・・・。
題名の通りコールバック関数とはどんなものですか?
#422-0
RE#418:コールバックとは・・・。
> 題名の通りコールバック関数とはどんなものですか?

電話を掛けることを英語で call って言います。
call back とは、折り返しで電話を掛ける事です。

そして、VBではサブルーチンを実行するときにも call 命令で実行します。
call back は、サブルーチンの中から、メインソースの中の関数・サブルーチンを実行することです。
これが電話の折り返しと様子が似ているので、電話の call back がそのまま使われています。
#425-1
RE#422:コールバックとは・・・。
> そして、VBではサブルーチンを実行するときにも call 命令で実行します。
サブルーチンの実行は、Callではなく、GoSubですよ。
#428-1
RE#425:コールバックとは・・・。
> > そして、VBではサブルーチンを実行するときにも call 命令で実行します。
> サブルーチンの実行は、Callではなく、GoSubですよ。

たしかにサブルーチンへの流れを変えるステートメントはGoSubですが、
この場合はプロシージャの中から別なルーチンという意味でサブルーチンだと思います。
なのできっと、ろってんまいあさんの言われているサブルーチンは
(Sub|Function)プロシージャのことでしょう。

この場合でGoSubステートメントでは別のプロシージャへまたぐ事はできないので
Callを使って別なプロシージャ(別ルーチン)を呼ぶという事では?。
#429-1
RE#418:コールバックとは・・・。
VC の場合だと、コールバック関数とは、イベントが発生したときにOSから呼ばれる関数の事です。

詳しくは、ヘルプの説明を読んで…、と言いたいところですが、難しいので、必要に迫られたら色々
調べてみるとよいでしょう。 まぁ、何かあったら指定された関数に処理が飛ぶ、程度の理解で良い
かと思います。 VB からは、公式には関数のアドレスを伝える事ができない事になっているので、
普通は使いません。(隠し命令はありますが、時期VBでは無くなるそうな)

#430-0
RE#425:コールバックとは・・・。
> > そして、VBではサブルーチンを実行するときにも call 命令で実行します。
> サブルーチンの実行は、Callではなく、GoSubですよ。

私も以前、同様の突込みを受けましたけど、突っ込み側は自信がないのか、同様に匿名さんでしたねぇ。

VB だけに関して言えば、ヘルプで「サブルーチン」に該当するのは GoSub で呼ばれるルーチンの事
です。 Call で呼ぶのは、確かに Sub プロシージャだと書かれていますね。

しかし、プロシージャという言葉はどちらかというと、DBのストアドプロシージャのように、手順
とか手続きの意味合いが強いので、ソフトウエア技術者はルーチンに対して、プロシージャという言葉
をあまり使いません。

また、VB でも Sub Main の事は何と説明します? メインのサブプロシージャ? こんな言い方では
、相手は首を捻ってしまいます。 一般的には、メインルーチンと言えば済みます。 メインルーチン
に対応する言葉はサブルーチンです。 サブルーチンと言う言葉なら、サブファンクションでもサブプ
ロシージャでも、どちらでも構わない言い回しになります。

更に言うと、GoSub なんて命令は旧 BASIC との互換の為だけに残された、行番号と並ぶ、古風で誰も
使わないものの一つです。 GoSub では、変数を全て引き継いでしまう関係上、構造化、カプセル化と
いう考えに当てはまらなくなるのですね。 たとえヘルプになんて書いてあろうが、GoSub の事は見な
かった事にする方がソフト関係者らしいと思いますよ。
#433-1
RE#430:コールバックとは・・・。
> 
> VB だけに関して言えば、ヘルプで「サブルーチン」に該当するのは GoSub で呼ばれるルーチンの事
> です。 Call で呼ぶのは、確かに Sub プロシージャだと書かれていますね。
> 
> しかし、プロシージャという言葉はどちらかというと、DBのストアドプロシージャのように、手順
> とか手続きの意味合いが強いので、ソフトウエア技術者はルーチンに対して、プロシージャという言葉
> をあまり使いません。
> 
> また、VB でも Sub Main の事は何と説明します? メインのサブプロシージャ? こんな言い方では
> 、相手は首を捻ってしまいます。 一般的には、メインルーチンと言えば済みます。 メインルーチン
> に対応する言葉はサブルーチンです。 サブルーチンと言う言葉なら、サブファンクションでもサブプ
> ロシージャでも、どちらでも構わない言い回しになります。
> 
> 更に言うと、GoSub なんて命令は旧 BASIC との互換の為だけに残された、行番号と並ぶ、古風で誰も
> 使わないものの一つです。 GoSub では、変数を全て引き継いでしまう関係上、構造化、カプセル化と
> いう考えに当てはまらなくなるのですね。 たとえヘルプになんて書いてあろうが、GoSub の事は見な
> かった事にする方がソフト関係者らしいと思いますよ。

Sub Main という表現がすでに Sub と Main という対立する言葉を含んでいる。
メインルーチン、メインプロシージャといえば、わかりやすいし、
メインのサブルーチン、メインのサブプロシージャといえばわかりにくい。
この点で言えば、サブルーチンと言えばわかりやすいというわけではない。

ちなみに正しく言えば、 Main という名前の Sub プロシージャ。
初期化プロシジャ程度にとらえるのがよいと思う。
VBのようなイベントドリブンのスタイルではメインルーチンと言う考え方
自体が古いものだと思われる。

さらに言えば、プロパティプロシージャ、イベントプロシージャとは言うが、
プロパティルーチン、イベントルーチンというのはあまり聞かない。

サブルーチンと言う言葉自体 GoSub なんかとともに廃れたものという扱いがよいと思うが。
#434-1
RE#433:コールバックとは・・・。
> サブルーチンと言う言葉自体 GoSub なんかとともに廃れたものという扱いがよいと思うが。

え! 私は今でも GoSub 使うので、それは困るかも。(^^;) まあ、使えなくなったら、
それに適した形にしますけど。
#あぁ、どんどん元の質問の内容と変わっていってしまう。(;_;)

ちなみに私が GoSub Return を使う場合は以下のようなときです。
・ある1つのプロシージャの中で、同じ処理が繰り返し出てくるとき、
・本来なら、その部分を別プロシージャにするわけですが、別プロシージャにしても、
 元のプロシージャからしか呼ばれない。
・おまけに、別プロシージャにすると、10個近い変数を渡さなければならない。
・なので、GoSub Return を使って、1つのプロシージャの中を2つに分けて使用する

GoSub Return を使わないで、プロシージャをキチンを分けようとすると、変数を減らすか、
引数オブジェクトを導入しなくてはならなくなる。変数は減らせないし、このためにオブジェ
クトを作る手間なんてかけられない。なんで、たまには GoSub Return を使います。(^^;)
#実は、数式の要素分解処理だったりします。
#436-1
RE#433:コールバックとは・・・。
話題がずれてきたので、一般掲示板に投稿しました。
今後のサブルーチンの話題のレスは一般掲示板でやりましょう。

#これ以上は話が膨らまないかもしれないけれど
このページと関連する記事:
#34383-0Ras API による電話番号の取得2000-11-29(水) 20:56
#1038-0初期値を与えたい1999-08-23(月) 09:02
#37768-0サブモジュール名を変数を使ってCallできますか?2001-01-26(金) 15:20
#4974-01フォーム内で複数のプロシージャをCallする時のエラー1999-12-08(水) 15:10
#6477-1プロシージャの呼び方について2002-04-03(水) 11:31
#28263-0コールバック2000-08-21(月) 02:12
#21757-0配列の値を渡すにはどうすればいいの?2001-07-09(月) 19:28
#2522-3API EnumWindows関数について2002-08-27(火) 02:05
#39144-0コールバック関数とは2001-02-20(火) 00:36
#37424-0ストアド プロシージャ2001-01-22(月) 11:54
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)