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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0630
Densyaファイルを選択するダイアログを自作する方法10解決


Densya

リンク

2019/6/30(Sun) 16:35:47|NO.87782

MinedowsというOSのようで全く違うOSもどきのような物を開発しているんですが、
ファイルを指定する際、inputを使用しています。
ですが開発者版を使用している方に「いちいち入力するのめんどくさい」と言われてしまいました。
普通はdialogを使用してポポポポーンとやれば良いのですが、
謎のこだわりがあり また自作感が損なわれてしまいます...。

dialog命令を使用せず、自分でファイルを指定するダイアログを作成出来る方法は無いのでしょうか...



この記事に返信する


ソラ

リンク

2019/6/30(Sun) 17:43:51|NO.87783

dirlistでディレクトリリストを取得、リストビューやbuttonを使えばそれっぽくできるのではないでしょうか。



Densya

リンク

2019/6/30(Sun) 19:28:07|NO.87784

ソラさん、有難うございます。
dirlistでリスト取得→ボタン描画→ボタンおす→パスを本来inputに入れる変数にドーンするまでは私も考えております。
ただdirlistで取得すると、

fileA.txt
fileB.mp3
fileC.zip

のように一つの変数に一気に入ってきます...
それを行ごとにバラすのはどうすればいいいのでしょうか...?



あり

リンク

2019/6/30(Sun) 19:53:26|NO.87785

>それを行ごとにバラすのはどうすればいいいのでしょうか...?

メモリノートパッドという機能があります。
http://www.onionsoft.net/hsp/v35/doclib/hspprog.htm#MEM_NOTEPAD



ソラ

リンク

2019/6/30(Sun) 20:13:12|NO.87786

ありさんの言うようにノートパッドで分割するか、
速度を求めるならsplitで改行コードを区切り文字に指定して分割する方法もあります。



Densya

リンク

2019/6/30(Sun) 21:52:10|NO.87787

dirlistでリスト取得→一時ファイルとして取得先の変数のデータを保存→noteget等で行ごとに読み込み→
ボタン描画→一時ファイル削除→ボタンおす→パスを本来inputに入れる変数にドーン

こんな感じで良いですかね



Densya

リンク

2019/6/30(Sun) 21:53:52|NO.87788

いや、よく考えたら保存しなくても行ける気が(



Densya

リンク

2019/6/30(Sun) 21:59:54|NO.87789

構造としては、

a = "dataA\ndataB\ndataC"
a = Note
notesel Note

noteget b, 0
button b, *a

noteget b, 1
button b, *b

noteget b, 2
button b, *c

stop

*a

mes "a"

stop

*b

mes "b"

stop

*c

mes "c"

stop



Densya

リンク

2019/6/30(Sun) 22:01:03|NO.87790

すみません、間違えて送信を押してしまいました。
続きからですが、構造としては、(面倒なので中略)がいいですかね。



Densya

リンク

2019/7/1(Mon) 19:42:29|NO.87794

テスト版ですが一応形はできました。

RIST = "" screen 0, 900, 700 chdir "C:/Users/" mes dir_cur dirlist RIST, "*.*", 0 split RIST, "\n", a repeat stat if ( a (cnt) = "" ) : break button goto a (cnt), *btn loop stop *btn mes stat stop



Densya

リンク

2019/7/1(Mon) 20:41:46|NO.87795

なんとかファイル名を取得するまで出来ました。
皆さんありがとうございました。

さんぷる↓

//module RIST_YD_MOD = "" RIST_ND_MOD = "" DIR_YD_MOD = "" DIR_ND_MOD = "" screen 0, 900, 700 chdir "C:/Users/" mes dir_cur objsize 100, 40, 0 // directory RIST_YD_MOD = "" DIR_YD_MOD = "" dirlist RIST_YD_MOD, "*.*", 5 split RIST_YD_MOD, "\n", DIR_YD_MOD mes "Directory" repeat stat if ( DIR_YD_MOD (cnt) = "" ) : break button goto DIR_YD_MOD (cnt), *btn loop DIR_FUNC_MOD = stat // not directory RIST_ND_MOD = "" DIR_ND_MOD = "" dirlist RIST_ND_MOD, "*.*", 1 split RIST_ND_MOD, "\n", DIR_ND_MOD mes "Not Directory" repeat stat if ( DIR_ND_MOD (cnt) = "" ) : break button goto DIR_ND_MOD (cnt), *btn loop stop *btn if ( stat <= DIR_FUNC_MOD ) : { mes DIR_YD_MOD (stat) }else{ ST_MOD = stat - DIR_FUNC_MOD - 1 mes DIR_ND_MOD (ST_MOD) } stop



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