« 第11回Ruby勉強会です | メイン | FreeBSDでRuby/SDL »
2006年7月17日
Exerb的コネタを一つ
さて、Exerb4.0.0でバイナリ、画像、データベースなどのデータファイルを実行ファイルに結合出来るようになったのでちょっとサンプルを作ってみました。
最初、「実行ファイルに格納されたfilenameに一致するファイル名を持つデータファイルをStringIOオブジェクトとして取得します。」の意味が分からなかったんですが、いろいろ試行錯誤してなんとか動く物が出来るようになりました。
Picarray = [["change.wav", 8864], ["circle.bmp", 196662], ["kmc.bmp", 97590], ["sample.txt", 26]]#datファイルから各ファイルを生成
def readDatbinary = []
#ExerbRuntimeが定義されている場合はそのStringIOを取得、そうでない場合はFileを開きます
If defined? ExerbRuntime
#exeファイルではこちらが選択されている
iofile = ExerbRuntime.open("picdata.dat")
else
#ruby combine.rbではこちらが選択されている
iofile = File.open("picdata.dat", "rb")
end#datファイルから各ファイルをサイズ分読み込む
Picarray.each{ |pic|
temp = []
temp << pic[0]
temp << iofile.read(pic[1])
binary << temp
}
iofile.close#各ファイルを保存する
binary.each{|binarydata|
tempfile = File.open(binarydata[0], "wb")
tempfile.write(binarydata[1])
tempfile.close
}end
えー、ソースにも書いてますが、Exerbで1つにまとめている場合はExerbRuntime.open("picdata.dat")
でStringIOオブジェクトとしてpicdata.datファイルを取得し、通常の場合(コマンドプロンプト、及びLinux環境)ではFile.open("picdata.dat", "rb")で取得しています。後は普通に必要な大きさに切り分けているだけです。
上記サンプルをまとめたのがこれです。
Exerbサンプルプログラム
投稿者 mak : 2006年7月17日 03:20
トラックバック
このエントリーのトラックバックURL:
http://sorakaze.net/cgi-bin/blog/mt-tb.cgi/93
コメントする