;テキストで保存する
sdim data,1000 ;データの安全のため大きくメモリを確保する
data={"1000バイトも取ったけど、文字列はこれしかありません。
もし、これでセーブすると1000バイトのファイルができてしまいます。"}
strlen kari,data ;文字数をkariに入れる
bsave "test.txt",data,kari
stop
|
単純にbsaveをすると、ファイルのサイズは、変数の大きさそのものになってしまいます。
そのため、特に文字列変数を大きく取ってしまった場合、ファイルサイズが無駄に大きくなります。
そこで、strlenで、文字数を数えそれを、ファイルサイズとします。
;ファイルがあるか調べる
sdim data,32000 ;テキストを読み込む変数
exist "test.txt"
if strsize=-1 : dialog "ファイルがありません" : end
bload "test.txt",data ;ファイルをロード
mes data
stop
|
通常bloadやpicloadで、ファイルが存在しないと強制終了してしまいます。
そこでexistを使うとこれを回避できます。
この命令はファイルの大きさを調べるものですが、ファイルがないと、−1を返します。
つまり、設定ファイルなどを必ず読み込む場合、使う人が消してしまった後でも、自動的に
初期のファイルを作ってしまうということが可能になります(^^)。
;複数の拡張子のファイルから、開かせる
dialog "html;*.htm",16,"HTML FILE" ;複数の拡張子を選択
mes "OPEN = "+ refstr
stop
|
通常ダイアログで引くように選択できる拡張子は一種類しかないのですが、サンプルのように
書くことで複数の拡張子のファイルを選ばせることができます。
;アイコンにドラック&ドロップでファイルを開く
exec cmdline,16
stop
|
何も特別なことはしていないのですが、システム変数のcmdlineを
知らないと、どうしようもならない・・・(^^;
あとは、EXEにしたときしか確認ができないのがちょっと不便(^^;
ちなみに、実行中のウインドウへのドラックはDLLを使用しないとできません。
;フォルダが有るか調べる
kari=""
dirlist kari,"save",5
if stat==0 : dialog "フォルダが有りません"
stop
|
残念ながらファイルが有るか調べる時と同様の方法(exist)では調べられません。
dirlistを使って調べることが出来ます。最後の5がフォルダだけを
検索するためのものです。
実は、この方法でファイルの有無を調べられますが、dirlistの結果を入れる変数を用意しなくては
ならないので、ファイルの検索で有れば、existで十分です。(速度的にもexistの方が早いですし)
;フォルダを開く
exec "explorer c:\\"
; exec "explorer /e,c:\\" ;explorerで開く
stop
|
サンプルのように開きたいフォルダを指定するだけです。その際\\でフォルダ名をつなぐこと。