HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0321
トノ新規命令内での getenv3解決


トノ

リンク

2020/3/21(Sat) 17:03:31|NO.89773

次のスクリプトだと、期待どおり、環境変数 SystemRoot の値が
表示されます。

#include "hspinet.as" getenv env_SystemRoot, "SystemRoot" dialog env_SystemRoot end

しかし、環境変数値の取得部分を新規命令としてまとめるべく次のようにすると、
エラーになります。

#include "hspinet.as" func_env end #module #deffunc func_env getenv env_SystemRoot, "SystemRoot" dialog env_SystemRoot return #global
結果レポートには次のように表示されます。
#HSP script preprocessor ver3.5 / onion software 1997-2017(c)
#Use file [hspdef.as]
#HSP code generator ver3.5 / onion software 1997-2017(c)
getenv_ng.hsp(6) : error 2 : 文法が間違っています (6行目)
--> getenv@m1 env_systemroot@m1, "SystemRoot"

なぜエラーになってしまうのでしょうか。



この記事に返信する


あらや

リンク

2020/3/21(Sat) 17:57:25|NO.89776

問題が2つあります。

問題1.getenvがグローバルの命令ではない事。

hspinet.as内で『#func getenv getenv2 $202』と定義されているので
モジュール内でそのまま使う事は出来ません。

#func global getenv getenv2 $202
と書き換えるか、もしくはモジュール内では@を付けるかしないと使えません。

getenv@ env_SystemRoot, "SystemRoot"



問題2.ソースの順番
理由は不明ですが、外部DLLの命令をモジュール内で使う場合
先にモジュールを用意しておかないといけないようです。

エラーになる例

#include "hspinet.as" func_env end #module #deffunc func_env getenv@ env_SystemRoot, "SystemRoot" dialog env_SystemRoot return #global
エラーが起きない例

#include "hspinet.as" #module #deffunc func_env getenv@ env_SystemRoot, "SystemRoot" dialog env_SystemRoot return #global func_env end



トノ

リンク

2020/3/22(Sun) 17:54:56|NO.89787

返信ありがとうございます。

教えていただいたところに従い変更したところ、
エラーなく動作するようになりました。

なぜこのような仕様/挙動になっているのか分からなくて
すっきりしないところがありますが、解決です。



トノ

リンク

2020/3/26(Thu) 17:38:31|NO.89833

いじくっているうちに面白いことに気がつきました。

あらやさんが NO.89776 で指摘くださったうちの問題 2 については、
モジュールを後回しにしても、#include より後ろのモジュール外で
一度 getenv を記述してあれば、エラーにならないようです。


;getenv dymmy, "" ; <-- ここでは NG #include "hspinet.as" getenv dummy, "" ; <-- これで OK func_env ;getenv dummy, "" ; <-- ここでも OK end ;getenv dummy, "" ; <-- ここでも OK #module #deffunc func_env getenv@ env_SystemRoot, "SystemRoot" dialog env_SystemRoot return #global ;getenv dummy, "" ; <-- ここでも OK

蛇足でしょうけどご報告まで。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.89773への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2018(c) All rights reserved.