カレントプロシージャー名を取得する簡易な方法はないでしょうか?
編集 削除グローバル変数を一つ用意しておいて
各プロシージャの頭で、カレントプロシージャ名をセットしていく
あとは取得したいときに、そのグローバル変数を参照すればよろし。
コーディングはめんどくさいけど、頭を使わない簡易な方法
↑んなもん、誰でも思いつくわ(笑)
結局、エラー処理のためと思うのですが、
Errオブジェクトに、モジュール名とプロシージャー名の
プロパティがあればなぁ、と思うのは私だけではないはず。
>>↑んなもん、誰でも思いつくわ(笑)
そそ、だから、だれでも思いつく方法。を明記してそれ以外で・・・。
という書き込みの仕方をしてくれれば良いんだけどね?
ま、簡易な方法で&プロシージャ名を取得するという
必要十分条件を満たせればよいかなと思ってさ。
別の手法もあるにはあるんだけど、
スレ主から何の反応もないので、これで十分だったと認識しますが。
実際どうなんでしょうね?(笑
> 必要十分条件を満たせればよいかなと思ってさ。
満たしていませんよ (^^;
あるプロシージャから別のサブプロシージャを呼び
元のプロシージャに戻ってきた後に
グローバル変数を参照すると、
カレントプロシージャではなく、
サブプロシージャの名前を返してしまいます。
結局、難しい問題です。
>あるプロシージャから別のサブプロシージャを呼び
>元のプロシージャに戻ってきた後に
>グローバル変数を参照すると、
それこそ戻ってきた時にグローバル変数を変更するという
手法なんでしょ?そのくらいは別に自分で考えつく範囲かと…
この手の話題って、たまにQAの掲示板で見かけるけど
何の為に必要なんだろうね?
> この手の話題って、たまにQAの掲示板で見かけるけど
> 何の為に必要なんだろうね?
エラーのトレースに必要なのかも知れませんね。
ちなみに、VB.NETであれば、StackTraceクラスで取得できます。
VB6等の場合は、該当する機能はありませんが、MZ-Tools Addinを
使うことで、プロシージャ名を含んだエラーハンドラを生成できます。
エラーログをファイルにAPPENDモードで書き出すような
機能を付けたいときに欲しいですねぇ。
コンパイルしちゃったらプロシージャー名って、
単なるアドレスになるんだけど、プロシージャー名として
保持しているんだろうか?
ソースで走らせるとき「呼び出し履歴」なんか使えそうなんだけど
オブジェクトとして「呼び出し履歴」を使えるはずなんだけどなぁ。
まぁ、標準でないのならゴリゴリ実装するしかないわな。
…関数の最初と最後に関数名をログアウトするような、な。(orz
と、釣られて書いてしまった(orz
よくみりゃかなーり前の日付じゃん