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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0330
ばんじょーscreenのシステムエラー11解決


ばんじょー

リンク

2014/3/30(Sun) 14:16:28|NO.61063

今画像ビューワーを作っているんですが、画像を開いた後に縮小ボタンを押すとシステムエラーが28行目(screen)で
起きてしまいます。F&Qとかにもシステムエラーは様々な要因があると書かれていたのでわかりません。
どうかご教授お願いします。

//以下コード
#include "hspext.as" ;外部ファイルを呼び出す(たぶんexeplor)
sdim folder,512;文字数分のメモリ確保
selfolder folder,"フォルダーを開いてください";フォルダーをダイアログで選択する
chdir folder;カレントフォルダ変更
*start
dirlist2h 1
dirlist2 gh,"*.jpg",1
sdim omega,gh
dirlist2r omega
pos 0,50;リストが何個もできないように座標指定し、重複させる
objsize 120,24;リストの大きさ指定
listbox a,120,omega;リストから一つ選択し、判定をaに代入する
pos 0,174;ボタンの位置調整
button "見る",*kill
stop
*kill
notesel omega;画像ロード用のメモリ(バッファ)
noteget death,a;listboxで選択した判定をテキスト化する
picload death
ginfo(2)=id;画像を表示したウインドウID取得
ginfo(12)=x;ウインドウの横幅取得
ginfo(13)=y;ウインドウの縦幅取得
button "縮小",*kio
button "リスト",*tinko
stop
*kio
screen 2,x*7/10,y*7/10;新規画面取得
gzoom x*7/10,y*7/10,id,0,0,x,y,1;x、y座標ともに十分の七
button "戻る",*tinko
gsel id,-1;縮小した際に元の画面を非表示
stop
*tinko
gsel id,1;戻るボタンを押した際に元のウインドウを表示
goto *start;リスト画面に戻る



この記事に返信する


Tetr@pod

リンク

2014/3/30(Sun) 14:27:01|NO.61064

20〜22行目、右項と左項が逆です。
HSP3 プログラミング・マニュアル(doclib\hspprog.htm)
の「変数」の部分を読んでみてください。



Tetr@pod

リンク

2014/3/30(Sun) 14:31:35|NO.61067

追記です。
ソースコードは<pre>〜</pre>で囲むと見やすいです。
あと、ラベル(*kill など)と変数名(omega など)はわかりやすいものにしましょう。



ばんじょー

リンク

2014/3/30(Sun) 14:36:34|NO.61068

Tetr@podさん、ありがとうございます。
直すと今度は21行目(id=ginfo(2))で文法が違うとのエラーが出ます。
一応ginfoのヘルプ見てみましたが間違ってるような気がしないです・・・。



cats

リンク

2014/3/30(Sun) 15:30:09|NO.61069

id=ginfo(2)でもid=ginfo(3)でもエラーでませんでしたよ。
ginfoに数値を指定したら結果が反映されるのではありませんよ。
ginfoは数値を取得する用のものです。
というかidに操作先ウィンドウを代入してもこのプログラムじゃ
id=0で決まってませんか?
ginfo(25)とかでID調べて作った仮想画面にpicloadでロードする
ことをおすすめします。
他にもいろいろ突っ込みどころがありますが。



kanahiron

リンク

2014/3/30(Sun) 15:30:44|NO.61070

なぜ括弧で囲ってしまうのでしょうか…

プログラミングにおいて、「=」は右辺を左辺に代入という意味です
なので

x = 10 x = x+10
という普通じゃありえない計算が可能になります
xに10を代入し、xに、「xに10足した数」を代入しています
なので代入できない変数や関数を左辺に書くとエラーが出ます

まだ、このスクリプト少し問題が有ります
「リスト」ボタンを連続で押しているとデバッグウィンドウのstatの項が2づつ増えていきます
これはオブジェクトIDです
要するに、押すたびにボタンがボタン上に重ねられていっています
このような簡単なプログラムをではあまり問題になりませんが、
今後謎のエラーの原因となったり動作が重くなったりします



YSR

リンク

2014/3/30(Sun) 15:43:00|NO.61071

>外部ファイルを呼び出す(たぶんexeplor)
 書いてあるコメントの意味が分かりません。
 selfolder命令とdirlist2関係の命令を使用するために、
 hspext.asをインクルードしているのではないのですか?
>判定
 別にリストボックスのインデックス番号のことをどう呼ぼうとあなたの自由ですが、
 独自名称を説明なしに使用すると読む人が混乱する恐れがあります。
>*kill *kio *tinko
 失礼ですが、一体何を考えてこのようなラベル名にしたのでしょうか?
 処理の内容が分かりやすいように名前を付けるようにしましょう。

他の方による指摘もありますので、一度しっかり内容を把握してから
ソースを書き直すことを推奨します。



ばんじょー

リンク

2014/3/30(Sun) 15:43:12|NO.61072

catsさん回答ありがとうございます。
エラーでないですか?
ホントによくわからないまま使ってますww
idの値も調べてみます。他にもいろいろ突っ込んでってくださいww

kanahiron回答ありがとうございます
>なぜ括弧で囲ってしまうのでしょうか…
ginfoの数字のことですか?ヘルプみたらそう書いてあったと思います・・・。
変数や関数は右辺に書くということを丁寧にありがとうございます。
それからリストボタンの問題ですがこれは一度ウインドウを初期化してから
の方がいいんですかね?何かほかに命令関数で使えるものがあるんでしょうか?



ばんじょー

リンク

2014/3/30(Sun) 15:48:02|NO.61073

YSRさん、回答ありがとうございます。

すみません、インクルードの説明がselfolderの説明と一緒にあって勘違いしてしまいました。
インデックス番号というんですね。了解しました!
ラベルはかなり適当につけてます。処理内容に添えて変えておきますね。
一度皆さんのアドバイスを頼りに書き直してみます。



YSR

リンク

2014/3/30(Sun) 15:54:26|NO.61074

>変数や関数は右辺に書く
 まずその認識が怪しいです。これはHSP以外のプログラミング言語にも言えることですが、
 普通の式における「=」の記号は、「左辺に右辺を代入する」ということを示しています。
 kanahironさんも書いていますが、あくまでも「代入」なので、左辺には代入できる
 変数が来るのが普通です(変数に代入はできますが関数に代入はできません)。
>括弧
 これは恐らく、NO.61068であなたが21行目を「(id=ginfo(2))」と書き直してしまった
 ことに対しての指摘でしょう。「(id」は変数名となりえないので、前述の理由により
 エラーが出ます。
>リストボタン
 要するに、「ボタンやリストボックス等は1回描画するだけで十分」ということです。
 背景の絵を消す(単色で塗りつぶす)のはboxf命令でできますし、面倒ならばcls命令で
 全部消し去ってからボタン等を描画し直す作戦もあります(推奨はしませんが)。

 基本的な知識が不足している傾向が見られますので、HSPの入門書……例えば
「最新HSP3.3プログラミング入門」を買ってじっくり読み解いていけばいいのではないでしょうか。
http://www.amazon.co.jp/gp/product/4798031445/



ばんじょー

リンク

2014/3/30(Sun) 15:55:55|NO.61075

皆さん、ありがとうございました。
一応タイトルの問題は解決し、プログラムにエラーは出ないので
解決とさせていただきます。
まだまだ未熟ですがアドバイスしてくれる方々がたくさんいて嬉しい限りです。
今後ともよろしくお願いします。



ばんじょー

リンク

2014/3/30(Sun) 16:02:31|NO.61076

タイプするの遅くて済みません。
YSRさんの意見見逃していました。

>変数に代入はできますが関数に代入はできません
なるほど、そういうことですか。
基本は右の値を左の変数に代入・・・。結構難しいですね。

>NO.61068であなたが21行目を「(id=ginfo(2))」と書き直してしまった
 ことに対しての指摘でしょう。
馬鹿ですみません。

>要するに、「ボタンやリストボックス等は1回描画するだけで十分」ということです。
なるほどループさせて処理する必要はないということですね。
boxfなども調べて使ってみます。
そうですね。基本をしっかり固めたいと思います



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