multiopen

複数のファイル名を取得

multiopen v1,v2,n3,n4

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

(プラグイン / モジュール : llmod3)

解説

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 スクリプトファイル(*.hsp)|*.hsp|テキストファイル(*.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)

test3.hsp

情報

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