multiopen

複数のファイル名を取得

multiopen v1,v2,n3,n4

v1 : 選択されたファイル名を受け取るための変数
v2 : 情報
n3 : フィルタのインデックス(1から)
n4 : Read Onlyボックスを付ける

解説

HSPのdialog(type 16,17)で複数のファイルを選択できるようにしたものです。
multiopen呼び出し時に、v1.0,v1.1にそれぞれv1,v2のサイズを代入しておきます。
v2には例のような形式でフィルタを代入します。
n3を省略、またはマイナスの値を使ったときの動作は備考参照。
n4を1にするとReadOnlyボックスを付けます。2にするとReadOnlyボックスを
チェックした状態にします。

この命令を呼び出した後のstatの値

0 キャンセルされた
1 ファイルが選択されてOKボタンが押された
2 ファイルが選択されてOKボタンが押された(ReadOnlyがチェックされている。ただし
複数選択されていない場合のみ)

p3を0(省略)にしてp1,p2に文字列を入れるとp1がタイトルになり、p2は初期フォルダに
なります。
p3をマイナス値にすると保存するファイル名を得るときに使うことができます。(ただし
複数選択はできません)

複数のファイルが選択されたかはnotesel,notemaxを使って調べます。
ファイルが一つしか選択されなかった場合、p1にはファイル名のフルパスが代入され、
p2にはファイルの拡張子が代入されます。
ファイルが複数選ばれた場合は、p1にnotegetで取得できる形式でファイル名が複数
入っていて、p2には選択されたファイルがあるフォルダが代入されます。(p1のファイル
名は'\r'($0d)で区切られています。)

サンプル

	buf_size=512 : info_size=128
	alloc buf,buf_size
	alloc info,info_size

	buf="ファイルを開くtest title" : info="a:\\windows"
	multiopen buf,info

	buf=buf_size
	buf.1=info_size
	info="HSP2 スクリプトファイル(*.as)|*.as|テキストファイル(*.txt)|*.txt|全てのファイル|*.*|"
	multiopen buf,info,1
	if stat=0 : mes "キャンセルされました" : else {
		notesel buf
		notemax mx
		mes "選択されたファイル数 "+mx
		repeat mx
			noteget a,cnt
			mes a
		loop
		if mx=1 : mes "拡張子は"+info : else mes "フォルダ "+info
	}

サンプル逆引き (1)

module_test.as

情報

バージョン2.61
作成日2004/03/01
著作者tom
URLhttp://www5b.biglobe.ne.jp/~diamond/hsp/hsp2file.htm
備考llmod.asをインクルードする。必要に応じてabout.as,msgdlg.as,multiopen.as,console.as,unicode.as,dragdrop.as,input.asをインクルードする
タイプ拡張命令
グループオブジェクト制御命令
hs ファイルhsphelp\llmod_stdio.hs