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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0322
gm別ファイルから設定したい6解決


gm

リンク

2010/3/22(Mon) 19:12:59|NO.31473

// test.hspの内容


if (i == 1) { mes "i = 1" } if (i == 2) { mes "i = 2" } stop end

// user.txt の内容

// i = 1 i = 2

test.hspの実行ファイル(test.exe)の動作をuser.txtをコメントにして、
変更したいのですができません。
モジュールとかやってみたけど無理でした。
やり方を教えてください。



この記事に返信する


maa

リンク

2010/3/22(Mon) 20:03:59|NO.31474

test.hspの頭に#include "user.txt"と書くといいかも。



しきり2

リンク

2010/3/22(Mon) 20:08:47|NO.31475

maaさんの方法ではコンパイル後に適応できなくなります。
なのでnotepad命令を使ったほうがいいです。

notesel a noteload "user.txt" noteunsel



gm

リンク

2010/3/22(Mon) 20:47:37|NO.31477

notepad命令を使うと.....。
以下のような場合、すべての内容を読み込んで、
値を探さないとダメなんですよね?

"i" がある行を探して、....。
"color"がある行を探して、....。
"bar_len"がある行を探して、....。 ><


// user.txt の内容



// --- ここからコメント ---
// ここから先はユーザーで定義してください。"//" はコメントを表します。
// よくわからなければ変更しないこと
//
// i = 1 : 初心者レベル
// i = 2 : 中級者レベル
//


//i = 1
i = 2

//
//
// ボールの色を変更します
//
//

color = red
// color = black

//
// ラケットの長さを変更します
//

//bar_len = 50
bar_len = 150



GENKI

リンク

2010/3/22(Mon) 21:08:35|NO.31478

> モジュールとかやってみたけど無理でした。

#includeを使おうとしたのでしょうか。
この命令は実行形式作るときにスクリプトファイルを連結するだけの命令なので、実行形式を作った後はこの命令は一切機能していません。


> 値を探さないとダメなんですよね?

はい。探せば済むだけの話です。
この行は変数i、この行は変数colorの数値だけを記述する。と言う具合に決めてしまうのが一番簡単かな。
コメントは、1文字目が特定の文字列が書かれてる場合はコメントとみなして、次の行にその変数の値が…とかするのがプログラムは簡単そうです。
ただテキストエディタで開いたとき読みにくいですよね。
と言っても読みやすさを考えると複雑化するので、文字列の操作覚えないといけないので大変ですよね。
そんなときはこれ。

「INIファイル」

設定ファイルとしてよく使われるテキストファイルです。
INIファイルはすでにフォーマットが決まっているので、gmさんが例に挙げた独自フォーマットは使用できませんがテキストエディタでの編集も容易です。

ググればHSPで読み書きするモジュールがいくつか見つかると思いますのでご検討ください。
一応私も公開してる一人ではありますが、使いやすいのを探してみてください。



gm

リンク

2010/3/22(Mon) 21:30:58|NO.31479

>「INIファイル」
> ググればHSPで読み書きするモジュールがいくつか見つかると思いますのでご検討ください。


ありがとうございました。
勉強になりました。



ANTARES

リンク

2010/3/23(Tue) 01:35:56|NO.31483

 参考までに。

num=2 sdim key,20,num key="i","bar_len" dim var,num dup i,var dup bar_len,var.1 notesel buf noteload "user.txt" repeat num p=instr(buf,0,"\n"+key.cnt+" = ") if p>0 { q=p+5+strlen(key.cnt) r=instr(buf,q," ") if r<0: r=instr(buf,q,"\n") r+=q var.cnt=int(strmid(buf,q,r-q)) } loop mes "i="+i mes "bar_len="+bar_len



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