グローバル変数の扱いについてNo.00168
青木 さん 99/02/19 13:02
 
 秀Term Evolution Version 4.36(以下HT)を使わしてもらってま
す。そこでひとつ質問があります。ここが質問などを受付けている
場所かわからなかったのですが、ここにポストしてしまいました。
 もしかすると、同じ内容の質問があるかもしれないのですが、非
常に多くの討議がなされているようで探し出せませんでした。

 質問は、スクリプトでのグローバル変数の扱いなのですが、ファ
ンクションキー(以下Fn)から呼出されたスクリプトでは、グローバ
ル変数は見えない状態になってしまうのでしょうか?
 例えば、以下のスクリプトを書いた場合、「call ERROR」ではち
ゃんと"表示されますか?"と表示されるのですが、F1キーを押したと
きに呼出される「keyassign f1, "ERROR", script, ERROR」では、
文字無し""で表示されます。

;***********************************************************
@ERROR = "表示されますか?"

Start:
call SetKeyAssign
call ERROR
exit

ERROR:
message @ERROR
return

SetKeyAssign:
keyassign f1, "ERROR", script, ERROR
return
;***********************************************************

 実際にやりたい事は、表示文字以外のコード(例えば0x00文字)を
出力させたいので、グローバル変数を使わなければ良いのですが、
後で何をやっているのか分からなくなるのが不安なので...C言語の
#define等があればそれでも代用できるのですが、HTでどの様に実
現できるのか、まだ探し出せていません。

 何か良い対策方法をお知らせいただければ幸いです。

[ ]
RE:00168 グローバル変数の扱いについてNo.00169
範子 さん 99/02/20 03:05
 

> 例えば、以下のスクリプトを書いた場合、「call ERROR」ではち
>ゃんと"表示されますか?"と表示されるのですが、F1キーを押したと
>きに呼出される「keyassign f1, "ERROR", script, ERROR」では、
>文字無し""で表示されます。

ちょっとした勘違いというか、思いこみですね。
F1キーは、スクリプトが実行されて終了してから押してません?
当然、グローバル変数は消えてなくなってます。

永久的変数でも使うか、スクリプトを終了しないようにするとか。

[ ]
RE:00168 グローバル変数の扱いについてNo.00170
かずや さん 99/02/20 04:38
 
こんちわ(*^-^)/

>質問は、スクリプトでのグローバル変数の扱いなのですが、ファ
>ンクションキー(以下Fn)から呼出されたスクリプトでは、グローバ
>ル変数は見えない状態になってしまうのでしょうか?
範子さんが解答されていますが、まったくその通りです

σ(^-^)は、スクリプトは秀Termの補助機能ではなく
秀Termを利用した1つのソフトウェアだと考えています

だから、スクリプトを終了すると、当然グローバル変数も
ローカル変数も消えてしまいます
(永久変数だけは、秀Termが保存するので残っています)

Fキーにラベルを割り当てた場合、そのラベルからの
実行になります
変数の代入が 違うラベルにある場合は、callなどで
再読込する必要があります

C言語を知らないので #defineがどういうものか
分かりませんが、宣言を違うファイルにしたい場合は
適当に分かりやすいファイル名で作って callすればOKです
*.hsc(*.scr)じゃなくても、callで呼び出すと
スクリプトの延長として処理されます
(Fキーやツールバーのスクリプト実行でも同じ)

こんなもんで分かるでしょうか・・・(^-^;

[ ]
RE:00168 グローバル変数の扱いについてNo.00171
青木 さん 99/02/23 16:24
 
範子さん、かずやさん

 コメントありがとうございます。

 なるほど、スクリプト自身が既に終了している状態になるので
すね。グローバル変数は内部的に覚えていると勝手に思い込んで
ました。

秀丸さんへ、
 もし、時間が沢山あって、そいでもって改定なんかがありまし
たら、スクリプトで文字置換え(Cの#define)なんて検討してもら
えませんかぁ〜? たんなる希望で〜す(^^)。

[ ]