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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0116
qwertyobjprm命令について5解決


qwerty

リンク

2022/1/16(Sun) 23:44:35|NO.95096

質問です。

if shiftkey=1:{ app1="" objprm app1adr,"" stop } if app1="":{ dialog "exe",16,"アプリケーション" app1=refstr test=str(getpath(app1,8)) objprm app1adr,str(getpath(app1,8)) }else{ chdir getpath(app1,32) exec getpath(app1,8) } stop 上記のようなスクリプトを書いたのですが、実行するとobjprm命令のところでエラーが起こってしまいます。 なにが原因かわかる人はお教えください。 よろしくお願いします。 環境:Windows10 HSP3.6 error3



この記事に返信する


zrs90(5さい)

リンク

2022/1/17(Mon) 00:41:29|NO.95097

スマホでしか、チェックしてないので
まだ、なんらかの原因があるかも...

まず、この2行 str 命令は不用です。
ファイルやフォルダ名ですから、そもそも、文字列扱いのはずなので。

test=str(getpath(app1,8))
objprm app1adr,str(getpath(app1,8))

を私なら

test = getpath(app1,8)
objprm app1adr , test

...とします。

後、else命令以降の
getpath 命令の使い方が、間違ってると思います。
hdl で調べるとわかりますが
変数名に代入しないと、ダメなはずです。

上で、代入された変数で、chdir 命令や、exec 命令を
実行するべきでは?

後は、省略してある、ソースがないので、分かりません。



zrs90(5さい)

リンク

2022/1/17(Mon) 01:20:25|NO.95098

ー追記ー

後、exec 命令ですが、os標準の電卓やメモ帳等は
フルパス指定、ファイル実行モード指定を省略しても
起動出来ますが、例外と考えていた方が良いです。

この辺りは、hdl等を参照しながら、exec 〜の命令を実行して見て
少しずつ覚えて行って下さい。



 

リンク

2022/1/17(Mon) 01:30:12|NO.95099

出されたソースだけで見るなら
>app1adr
この変数に何も代入されておらず、尚且つオブジェクトが一つもないからですね。
つまるところ、問題の個所は提示されてない箇所にあると思います。

HSPのヘルプ見ればわかると思いますが、
オブジェクトIDは1スタートではなく、0スタートです。
上記変数は正しいオブジェクトIDになっていますか?
というか、そもそもオブジェクトは配置されてますか?

objprmの上に
input a

を入れるだけで正しく動作すると思いますよ



qwerty

リンク

2022/1/17(Mon) 17:04:23|NO.95101

>zrs90(5さい)さん
str命令は消しました。
exec命令は練習しようと思います。
> さん
すみません情報が不足していました。
このスクリプトはbutton命令で使うラベル内のスクリプトでapp1adr変数にはbutton命令でのオブジェクトIDを入れてます。

button str(getpath(app1,8)),*app1app app1adr=stat
またiniファイルでapp1にファイルパスを指定する作りでした。

ご回答ありがとうございました
ここは一応解決とさせていただきます。



zrs90(5さい)

リンク

2022/1/18(Tue) 11:26:42|NO.95103

qwerty さんへ

/*

getpath 命令ですが、当方、気になり調べてみました。
申し訳ありませんでした。勉強させて頂きました。

ファイルパスを、セーブ/ロードで使う
場合では、サンプルを一通り見た限り
hdl内 getpath 命令での、サンプル通り
文字列変数に代入して使っていました。
(※変数内の文字列のサイズの問題??)


ただ実際に、下記の様な使い方をしている
サンプルがあり、文字列変数に代入しなくても
使えるようです。

●sample\basic\getpath.hsp (一部ソース)

mes getpath(a, 0)


●sample\misc\mkpack.hsp (一部ソース)

if getpath(ff,2)=".dpm" : hed=";"

...等、数点で、文字列変数へ代入せず、直接使っている例が
ありました。

...上のサンプルですが、自分昔、使った事があります。(恥)


後、質問で提示されているソースですが
今回の3〜4倍(約スマホ1画面分位)なら
公開して、構わないのであれば
全て提示して、質問された方が良いと思います。

回答して頂ける方も増えますし
ファイル実行出来れば、回答にかかる時間も
少なく済みます。...どうでしょうか?



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